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
Replay: moved replay tool into Tools/Replay
Replay: added parameter handling

use parameters from log, and allow override
Replay: added accel and gyro mask options
Replay: fixed -g option
AP_NavEKF : Add accel aliasing protection
AP_NavEKF : Add div0 protection to the IMU1_weighting calc
AP_NavEKF : Fix bug that prevents Zacc bias state variance being updated
AP_NavEKF : Use average of dual IMU gyro data when available