AC_Fence: add 10sec manual recovery

This resolves issue #461 by giving the pilot a minimum of 10 seconds to
attempt to manually recover before the autopilot will attempt to retake
control to bring the copter home or land.
Copter: integrate 10sec manual recovery after fence breach
Copter: remove unused variables from fence.pde

saves 2 bytes
Plane: moved auto mode variables to auto_state
GCS_MAVLink: prevent uninitialised bytes being written to a serial port
Replay: fixed ahrs.set_fly_forward() in Replay for copter
Copter: GPS failsafe ensures LAND is pilot-controlled

This resolves issue #880 in which if a GPS failsafe occurred while the
vehicle was already in LAND mode, the LAND would continue to be GPS
controlled LAND instead of pilot-controlled LAND
Copter: RTL alt should not be above fence alt

Resolves issue #435
If the altitude fence is enabled, when the vehicle RTLs it will return
at the lower of the RTL_ALT and the FENCE_ALT_MAX
Copter: land_do_not_use_GPS has no return value
Copter: use get_current_nav_index()
Copter: fence enable/disable via MAVLink
AP_NavEKF: Add ability to inhibit in-flight mag cal and clean up moding

This will enable in-flight magnetometer calibration to be inhibited unconditionally,
This is required for long balloon carriage flights where ground speed can be high
enough to put it into in-air state, but with very poor observability of magnetic field
states causing bad state estimates and heading offsets to develop over time.

The mode control for wind and magnetic field state inhibit has also been explicitly
defined and cleaned up
AP_NavEKF: Synthetic sideslip fusion numerical error protections
AP_NavEKF: Fix bug in pre-flight gyro bias logic

This reduces the noise on gyro bias estimates for copter and rover because
the increased process noise intended to aid initial bias estimation after
start is no longer tied to ground mode, which can toggle on and off for
those vehicle types, but is instead tied to the pre-arm static mode, which
is a more reliable indicator.

Also the scaler has been reduced to reduce noise on estimates pre-flight
AP_NavEKF: Fix bug that could cause divergence in magnetic field states

Leaving the off-diagonal terms in the state covariance matrix frozen
when magnetic fields state corrections were inhibited was incorrect as
these terms capture the correlation between the errors in the various
states, and need to either be continuously updated, or zeroed.

A theoretically more correct approach is to turn the process noise on these
states to zero when corrections are being inhibited, which keeps all the
correlation information up to date. This has been applied to the magnetic
field covariances. the simpler approach of resetting the off diagonal terms
to zero was not used as this slows learning to a crawl when the inhibit
is being turned on and off constantly which is the case for copter

For wind states, the simpler approach of zeroing the off diagonals in the
P matrix has been adopted, as wind state estimation is not turned on and
off constantly in flight like magnetic field estimation can be for copter
and rover
AP_NavEKF: Add divergence check to filter health