AP_Compass: avoid division by zero if we haven't received any mag reports

Otherwise, get_field() will return NaNs after once every few calls to
read() during compassmot on PX4 platforms, which causes compassmot to fail.

This is a quick hack around the deeper issue, which could be something
like the PX4 mag driver experiencing starvation and skipping mag reports,
buffer overrun or something else that causes mag reports to be dropped.
Or perhaps we should never expect in the first place that we will always
receive at least one mag report between calls to read().
AP_Compass: fixed last_update for secondary compass with primary failed

this ensures EKF and DCM will use a secondary compass if the primary
fails
Rover: report unhealthy compass if primary compass unhealthy
Plane: report compass unhealthy if primary compass unhealthy
AP_GPS: added DataFlash to GPS init to allow for detailed logging

this will allow GPS drivers to log much more detailed device specific
information
AP_GPS: added detailed hardware status logging for uBlox

this gives us noise, jamming and RF information from the uBlox
protocol. This will hopefully allow a more detailed investigation of
antenna choices and RF interference
DataFlash: allow drivers to setup their own logging formats

this allows drivers to ask the dataflash driver to add new log formats
AP_InertialNav: fixed example build
VARTest: fixed build
AntennaTracker: fixed build with GPS changes
FollowMe: update for GPS changes
Plane: updates for GPS changes
Copter: updates for GPS changes
Rover: updates for GPS changes
AP_GPS: fixed example builds
Plane: fixed a compiler warning
AP_InertialSensor: fixed some compiler warnings
AP_Mission: fixed some compiler warnings
GCS_MAVLink: fixed some compiler warnings
AP_NavEKF : Clean up angle and mag field initialisation

This path reduces duplicated code, eliminates unused variables and
causes the earth magnetic field states to be reset when exiting static mode
which will occur every time copter is armed. This enables copters to be
powered on and initialised inside vehicles or houses, without bad earth
field values affecting flight.