Refactoring and additional examples

* gps_fix pulled out into separate class
* dateTime separated into date and time
* sentence type now table-driven (was nested FSM)
* virtual NMEA message table allows subclasses to implement additional
NMEA messages (all in PROGMEM)
* implement ublox proprietary NMEA messages PUBX 00 and 04
* configurable `gps_fix` members and helper macros for conditional
parsing
* separate `coherent` flag allows marking individual fields as valid (or
not) during parsing (was computed from state)
* `send_P` changed to overload `send` using `str_P` prototype
* ublox now separately configurable for NMEA and/or ublox protocols
* added NMEA test program and ublox example