improve biquad precision and performance by using direct form 2 transposed instead of direct form 1
keep float results for luxfloat pid controller, instead of casting twice
hardware failures by counting the number of long flashes.
Fix up sensor read API so that code that uses sensors can detect
malfunctions.
If a failure mode occurs in a debug mode the code reboots the system
rather than rebooting to the bootloader.
This primarily is to avaoid stalling the main loop when beeping and
flashing.
This is needed because oneshot ESCs do not receive updates when the main
loop is stalled.
Additionally the beeper code for sticks held in disarm position is
changed since it also clashed with profile selection. Now profile
selections can be seen and heard clearly.
Other subsections of the system that changed the LED0 state while the
main loop is running have been updated to use the status indicator API
instead of blindly hitting the hardware which previously caused lots of
odd LED flashing behaviour - now it is consistent.
Note: not working on the sparky, MPU9150 needs passthough enabling but
when enabled the mag and gyro won't ack on the default addresses. Needs
further investigation.