The duration calculation was using %, but that's only supported on duration objects when the arithmetic type supports %, and hence fails for floats. Fixed by subtracting off the calculated values instead.
Allowed durations and non system clocks to be set from floats.
Add unit tests and documentation for the chrono cast.