Plane: added TKOFF_HEAD_HOLD option

this allows control over whether ArduPlane tries to hold heading
during auto takeoff. For hand launches it can be better to hold the
wings level and not attempt to hold heading during takeoff to prevent
the possibility of a stall during the climb out.

Thanks to Chris Miser from Falcon UAV for the feedback that led to
this option.
GPS: add 2D fix type
AHRS: add support for GPS fix type 2D
Copter: add support for GPS fix type 2D
Plane: add support for GPS fix type 2D
GPS: fixes after review

Ensure 3D fix before returning velocity_down
UBLOX: restore check of fix_status as part of determining 2D or 3D fix
SIRF: add missing brackets on fix type check
Rover: add support for GPS fix type 2D
Plane: replace gps fix with status

Required to ensure 3d fix is used for initialising home
UBLOX GPS: fix MSG_SOL typo

"status" was used instead of "solution"
Plane: also avoid rudder on takeoff with TOFF_HEAD_HOLD==0
Plane: change FBWB altitude control algorithm

this makes FBWB much less sensitive to airframe tuning. When the
elevator stick first goes neutral it locks in the current altitude as
the target altitude. When the elevator stick is off neutral, it moves
the target altitude in proportion to the elevator, at a rate goverened
by the new FBWB_CLIMB_RATE parameter

This prevents the aircraft from slowly drifting in altitude in FBWB,
and gives a more intuitive control mechanism for altitude.

Thanks to Chris Miser from Falcon UAV for help in designing this
change
autotest: added GPS vertical speed to the sitl simulator
SITL: added GPS speed down to SITL state
build: fixed SITL build on windows
autotest: added license and safety statement
Rover: added range of sonar distances and voltages
Rover: fixed sonar reset after the turn time

thanks to Tom for finding this
Rover: identify as a rover in MAVLink heartbeat message
Rover: log obstacle events
Rover: added HOLD mode

used when RTL completes