Time parsing parses seconds as rational instead of float to avoid rounding errors.

Avoid errors like the following:

    Time.parse_iso8601("2014-12-11T16:54:54.549Z").as_json
    => "2014-12-11T16:54:54.548Z"

The seconds portion of the time string was being converted to `Float`, which caused rounding errors in certain cases. 

Changed to using `Rational` to avoid these errors. See [bug discussion](https://bugs.ruby-lang.org/issues/7829).