Add Millisecond support
Add millis since epoch and re-arrange when onLocationUpdate is called

Adds milliseconds since epoch.  This is quite useful for having a
timing mechanism that always counts up and doesn't roll over unlike
the currently implemented seconds since midnight.

This change also puts the call to onLocationUpdated in the GGA
stanza _before_ the GGA data is parsed.  This is done because GGA
sentences are always first in a NMEA paragraph from our GPS mouse.
By doing this we ensure we read the entire previous paragraph before
we process any of the data for that paragraph.  This allows us to use
all the data whenever we make an update.
Convert to using seconds since first fix for predictive timer

We used to use seconds since midnight for the predictive timer.
There was a major flaw in this though, it would reset whenever
UTC time would roll over to the next day (4pm PDT).  This would
break a persons lap and would screw up the timer until the box
was rebooted.  With this fix we are using absolute time since
the box first got its GPS position.  This frees us from worrying
about the roll over.
Integrate the new DateTime and Millis bits into testing

Also fixes a casting bug that was causing issues.  Do note that
you can see the imprecision that is created by using floats to
represent seconds when we only have time resolution down to the
thousands of a second.