Attitude: Clean up the initialization code

Use sensibly labeled enum to indicate when the complimentary filter
is initializing or during arming.
Attitude: When zero gyro on arming, use a block averaging of the gyros

Previously an IIR filter was used but this would normally over shoot
if there is much error.  This code is a bit more complicated but
should avoid that problem.
Attitude: Level attitude more smoothly during arming

Previously accelKp was set to 1 for the entire arming period.  This
is overkill and we can use a decayed schedule for a smooth
convergence.
Address some comments from
https://github.com/PhoenixPilot/PhoenixPilot/pull/181
Attitude: Apply the zero gyros while arming to main code

This replicated the CC code.  Adds a clearer set of state labels during
arming and poweron.  Needs two improvements:

1) since the filter can be changed on the fly using the absolute system
time to time initialization is going to create  bugs when switching to
the complimentary filter

2) adds some static variables which I would prefer to eradicate
Increase the default AccelTau to 0.1
Attitude: Move the gyro bias estimation variables into a structure
Attitude: Consolidate the complimentary filter variables into a structure

By moving all these variables into their own structure it will be easier
in the future to make the complimentary filter a standalone library or
allocate the memory required dynamically.
Attitude: Make sure timing is relative to when filter was first run

Since we can toggle between filters on the fly, using TickCount() to
time how long since initialization will not normally be correct.  This
stores the time value when initialized and compares against that.
Simulation: Add a pios_sensors interface

Now that the attitude module checks whether a mag queue is registered
simulation needs to know about pios_sensors to know to use the mag in
the ekf.  This adds this interface.
Merge pull request #181 from peabody124/zero_arming

Zeroing during arming