The numerics of these operations is fairly subtle, and the overflow boundaries are somewhat surprising, so additional test coverage isn't a bad thing (also gives us an excuse to exercise Int128 more)
* Fix sign of fractional units in Duration initializers from Double.
When separating a double duration into integral and fractional parts, we got the sign wrong. This fixes that bug.
* Fixup variable name.
When constructing a Duration from Double, we should do it in such a way that exact integer inputs are preserved exactly, so long as they are represented as a Duration. This was not previously the case. Now it is.