Use floats internally

This changes the internal representation of the firing time for a timer from a Time object to a float. This also renames the `Timers::Timer#time` method to `Timers::Timer#offset` since it's now a floating point offset from a fixed epoch (January 1st, 1970 for Time, but the program startup time for something like hitimes).

The result is better typechecking throughout and an easier conversion to something like hitimes