AltitudeHold: add a landing flag to wind down integral

When throttle is below 0, then allow the AH module to calculate
a throttle as low as -0.1f. This causes the integrals to reset
in stabilization and lets it sit nicely on the ground.
AltitudeHold: when in landing mode hold level

When the throttle (from user) is below 0 then force the
system to go level and ignore the stick inputs. This makes
sure motors are nicely idle when it is on the ground.
AltitudeHold: make deadband programmable
Arming: allow arming in altitude hold

Now that low throttle wipes the integral it is safe
to arm while on the ground. Holding low throttle will
cause the desired setpoint to move.
draco: changed USB VID/PID to a600:e8fe
draco: maximum firmware size increased to 384kB
draco: added UAVO for firmware update of OSD MCU
draco: communication with bootloader on OSD MCU (firmware side only)
Stabilization: properly zero MWRATE pids

The code had a typo leftover and was zeroing the
integral for the wrong PID structure when starting
MWRate. This caused the integral to wind up on the
ground.
Sparky: add code for erasing flash

Compile the code with "make -j8 ERASE_FLASH=YES fw_sparky"
and it should erase the settings partition on each boot.
Merge pull request #1401 from peabody124/mwrate_integral_windup_fix

Stabilization: properly zero MWRATE pids
Merge pull request #1392 from peabody124/altitude_hold_landing

Improve landing and takeoff in altitude hold mode
Merge pull request #1402 from peabody124/sparky_erase_settings

Sparky: add code for erasing flash
draco: osd firmware update - gcs side
Merge remote-tracking branch 'upstream/next' into draco
Merge branch 'draco_osdupdate' into draco
Merge branch 'draco' into draco_experimental