Fixed clock implementation to use fixed-point numbers

I was thinking microseconds would work, but then realized they would wrap incorrectly.
Fixed point is required for the kind of wrapping logic I've been using.
Rearranged the way service and fd state is reported

The previous design had some flaws, and I also decided that it was
better to give the script-side timestamps instead of durations, so
that the script can do its own math on them.