AP_NavEKF : Updated GPS glitch protection logic

This adds new functionality to the detection and compensation of GPS
glitches:

1) A maximum allowable innovation is calculated using the GPS noise
parameter multiplied by the gate, with an additional component allowing
for growth in position uncertainty due to acceleration error since
the last valid measurement
2) Includes per vehicle type values for the acceleration error limit
3) If the innovation length exceeds the maximum allowable, no fusion occurs
4) If no fusion has occurred for long enough such that the position uncertainty
exceeds the maximum set by a per vehicle parameter or a maximum time, an offset
is applied to the GPS data to so that it matches the value predicted by the filter
5) The offset is never allowed to be bigger than 100m
6) The offset is decayed to zero at a rate of 1.0 m/s to allow GPS jumps to
be accommodated gradually
7) The default velocity innovation gate has been tightened up for copter and rover
8) The variance data logging output has been updated to make it more useful
Dataflash : Improved logging of EKF sensor health checks

This changes the definition sof the messages in the EKF4 message to make it more useful
The values shown now relate directly to how much margin there is before a measurement
is rejected, enabling better tuning of error trap parameters
Replay : Incorporate EKF4 flash logging updates
AP_Airspeed: changed sqrt() to sqrtf()
AP_NavEKF: use pythagorous2()
AP_Airspeed: use pythagorous3()
AC_WPNav: replace safe_sqrt with pythagorous2
AC_PosControl: replace safe_sqrt with pythagorous2
InertialNav: replace safe_sqrt with pythagorous2
AP_GPS: zero state structure on driver release

this ensures no values are left from the previous driver
AP_GPS: handle multiple GPS in GPS setHIL()
DataFlash: hdop is unsigned
Replay: handle multiple GPS sensors
Plane: update for GPS.setHIL() API
Rover: update for gps.setHIL() API
Copter: update for gps.setHIL() API
Ublox: Enable 1Hz Lock LED by default