AP_InertialSensor: make HIL timing more accurate

needed for 400Hz replay
AP_NavEKF: improved replay timing
AP_NavEKF : Fix variance constraint bug

Constraining variances to a minimum value of 1e-9 was causing problems
with gyro bias and angular accuracy in noisy GPS environments.
Because the constraint is applied after every covariance prediction
and correction, a lower value of 0 is more appropriate.
AP_NavEKF : Improved heading and magnetic field state initialisation
Rover: disable GPS2 in HIL
Copter: disable GPS2 in HIL
Plane: disable GPS2 in HIL
AP_AHRS: removed the AHRS_GPS_DELAY parameter

the best value has turned out to be 1, and tweaking it has not turned
out to be useful, so this simplifies the code in preparation for
adding the anti-aliasing handling with multiple accelerometers
AP_AHRS: choose the best accelerometer at each drift correction step

this greatly reduces the impact of aliasing on accelerometers by
choosing the accelerometer that produces the smallest error term in
DCM. The difference can be quite dramatic on the Pixhawk.
AP_NavEKF: use the accelerometer chosen by DCM for each step
AP_Compass: improved COMPASS_ORIENT and COMPASS_EXTERNAL for Pixhawk
AP_InertialSensor: expose get_primary_accel() for use in AHRS
AP_AHRS: use primary accel for accel_ef

Logs from Randy show that the copter INav code can't handle the
accelerometer sensor changing.
AP_NavEKF : Increase the tuning range for magnetometer measurement noise
AP_AHRS: added get_fly_forward() method

will be used to detect a copter
AP_NavEKF: only use the active accel from DCM if fly_forward is set
AP_InertialSensor: Correct out-of-bounds array access that was causing SITL to crash
SITL: simulate dual accel/gyro
AP_NavEKF : Fixes zero compass offsets on initialisation
AP_NavEKF: give a sensible error for no such file on replay