Fix precision issues in Time by avoiding conversions to nanoseconds.

Calculations using Time are done to the nanosecond.  When using dates,
the Unix time converted into nanosecond is too big (in absolute value)
to fit in a `long`.  The idea in this fix is to separate the millisecond
calculation from the nanosecond one to avoid converting these dates
into nanoseconds.
Remove useless casts.
Fix nanosecond precision for minus operation.
Merge pull request #745 from tychobrailleur/time_precision

Fix precision issues in Time by avoiding conversions to nanoseconds.