AC_WPNav: spline div by zero fix

Also add check for straight line navigation to ensure speed is not
reduced below zero when it hits the leash limit
Also minor formatting changes
AutoTest: fix error reporting for copter AVC mission
Copter: Improve surface tracking dynamics

This little fix will allow much higher sonar_gain without the
oscillating effect it used to bring.
Copter: accept DO_CHANGE_SPEED outside of missions

https://github.com/diydrones/ardupilot/issues/1095
Copter: flag stays landed unless pilot raises throttle
INav: clear historic z-axis position estimate when set_altitude called
Copter: set inav alt to zero when arming
AP_Math: fast_atan2

This is 126us per call vs 199us on the AVR.  it is accurate to about
0.28 degrees

Committed by rmackay9 but contribution is from David Dewey
CPUInfo: add fast_atan2
Copter: use fast_atan2 for bearings to home and next WP
AC_WPNav: use fast_atan2 for bearing calcs
AC_Circle: use fast_atan2 to calc bearing from center

This does not save much time because it's only called at initialisation
autotest: added Ballarat to autotest locations
Plane: release 3.0.4beta2
Copter: Fix zero throttle flip issue Stabilize

The problem is that the init_targets is intended to ensure the
controller doesn't build up the I term when the throttle is low. Because
it is poorly named (or used) it have been written to do something else.
Here I change it to do what the code is trying to use it to do.
AC_AttControl: rename init_targets to relax_bf_rate_controller
Copter: integrate init_targets rename to relax_bf_rate_controller

Also remove unnecessary init_targets from flight mode init functions.
TradHeli: integrate init_targets rename to relax_bf_rate_controller
Copter: flip records starting attitude

Previously flip relied on the attitude controller not updating the earth
frame target during the flip which can't be guaranteed.  Safer for flip
to maintain it's own copy of the original attitude .
AC_PosControl: freeze feed forward and vector fixes