Buffer the data from the GPS UART so that we can assemble a complete NMEA sentence before parsing it.
Switch to a select()-based loop instead of a polling loop.
Moved the link-drop-panic code out into its own function.
Some better error reporting if things fail during setup.