Copter: control_hybrid initial version
Copter: integrate skeleton Hybrid mode
Copter: add hybrid state struct, formatting changes
Copter: refactor and split out wind compensation
Copter: add Hybrid parameters
Copter: restructure hybrid into more states
Copter: add hybrid_mix_controls

Allow wind comp estimate to run when vehicle travelling up to 30cm/s
(was 10cm/s)
Copter: hybrid works for 100hz and 400hz
Copter: allow arming, disarming in Hybrid mode
Copter: Hybrid estimates wind when speed under 10cm/s
Copter: Hybrid 10hz updates to wind comp lean angles
Copter: Hybrid fix wind_comp time constant

Corrected timer init values and wind_comp time constant to get the best
behaviour

Check if wider deadband required (current is 30).
We were using a comparison to a 70-100 cdeg deadband in our initial
code. The deadband was there to avoid unwanted switches in case of
inaccurate fingers/radio

Adjusted timers to 100/400Hz

I_term does not init when in hybrid loiter
AC_WPNav: add reset_I to init_loiter_target
AC_PosControl: update_xy_controller allows not resetting I term
Copter: Hybrid's max brake angle to 30deg
Copter: fix Hybrid flight mode in Parameter description
Copter: hybrid init brake roll and pitch at loiter exit
Copter: hybrid add Brake or Loiter to Pilot override transition

Corrected a little mistake in get_wind_comp...()
Mixed transition not only from loiter but as well from brake to manual
override
Copter: Hybrid fixes to wind_comp, brake pitch timer, thr peaks

There was an error in the velocity axis used to update
brake_timeout_pitch (vel_right instead of vel_fw)

The wind_comp was not enough filtered for the Pixhawk (400Hz), so I
added a specific time constant (TC_WIND_COMP) to have the expected
filter with 400Hz controllers.

About throttle peaks, after some tests and from logs, they happen when
hybrid switches to loiter.
There is always a difference between Alt and DesiredAlt (DAlt), but,
when loiter engages, it initializes DAlt = Alt and the copter tries
immediatelly to reach that new setpoint. So the solution would be to
init_loiter_target() just as it was in pre-onion code : only x/y and not
z. and to be able to pass parameters like that
wp_nav.init_loiter_target(inertial_nav.get_position(), Vector3f(0,0,0));

Well, from this new code structure, it seems not possible with current
functions so I've used set_loiter_target that init position passed as
parameter and velocity to 0 (as expected).
BTW, I think there was something wrong with set_loiter_target function,
the "Vector3f& position" parameter was not used at all...
I moved the reset flag from init_loiter_target to set_loiter_target.
AC_WPNav: add reset_I to set_loiter_target