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 track of nanoseconds overflowing to the next millisecond, which is possible when the first argument is not a `Fixnum`.