Add support for Floats as the first argument in Time.at.

While investigating #565, I noticed that JRuby converts a `Float` argument given to `Time.at` to a Java `long`, thus losing some precision. 

This commit fixes that, plus keeps tracks nanoseconds overflowing to the next millisecond, which is possible when the first argument is a `Time` or a `Float`.