Plane: avoid doing radio trim if less than 20% of travel available

this prevents problems with awful trim on bootup due to RC TX being
off
AP_Navigation: added a navigation controller class

the new L1 controller will be a instance of this class. Other
navigation controllers can be added as additional instances

Pair-Programmed-With: Paul Riseborough <p_riseborough@live.com.au>
AP_Math: added Vector2f.angle()

useful for calculating the vector in polar coordinates
AP_Math: fixed grammar error
AP_Math: added RadiansToCentiDegrees and RADIUS_OF_EARTH
AP_Math: moved a lot of vector templates to cpp from .h

this reduces the code size quite a lot on AVR
AP_AHRS: added wind_correct_bearing() and groundspeed_vector()

these are very useful for navigation libraries
AP_AHRS: fixed functions that need to be virtual

functions overridden in a child class need to be marked virtual, or
you get the parent class function
AP_AHRS: Addition of a first order complementary filter to AP_AHRS::groundspeed_vector

Addition of a complementary filter to estimation of the ground velocity vector for use by the L1-nav
AP_L1_Control: Addition of library for geometry calculations required for L1 Control.

1) Explicit control of tracking loop period and damping which removes previous
   variation in period with speed and fixed damping ratio
2) Explicit control of track capture angle (now set to 45 degrees by default)
3) Removal of restriction on loiter radius being greater than L1 distance

The circle(loiter) control is a L1 and PD hybrid utilising L1 for waypoint capture and PD control for circle tracking.

Pair-Programmed-With: Paul Riseborough <p_riseborough@live.com.au>
Pair-Programmed-With: Andrew Tridgell <tridge@samba.org>
Plane: update for new AP_Navigation controller class

this switches ArduPlane over to use the L1 navigation controller, via
a generic nav_controller object pointer.

Note that the nav_controller controls all types of navigation now,
including level flight and heading hold. This provides a cleaner
abstraction than the old method of special case navigation handling

Pair-Programmed-With: Paul Riseborough <p_riseborough@live.com.au>
L1_Control: added a comment on speed of the L1 control code
autotest: removed obsolete navigation parameters for ArduPlane
AP_GPS: fixed initialisation error in uBlox driver

found with valgrind
AP_InertialSensor: ensure parent class is initialised in instance classes
Plane: removed HIL_MODE_ATTITUDE 

we really need full sensors for HIL with the L1 controller. The flight
is also _much_ better with sensors HIL.
Plane: added LEVEL_ROLL_LIMIT parameter

this replaces both TKOFF_HEAD_HOLD and RUDDER_STEER, allowing users to
instead select a roll limit for takeoff and landing
Plane: update author list