Initial OpenPilot CC3D commit.
CC3D - Support MPU6000 Gyro/Acc and SPI 1/2.
Replace tab with space.
CC3D - Disable I2C for now.
CC3D - Hack to enable a simple quad configuration using PPM input to be
tested.

PPM and motor outputs conflict since they use the same timers so this
just avoids conflicts.
CC3D - Fix builds that use l3gd20 - duplicate SPI code removed.
CC3D - Delete old SPI code.
Fix builds on targets that do not have sonar support.
STM32F3DISCOVERY - Fix build, MPU6000 not supported on this target yet.
CC3D - Support PPM input on IN_S1.

This required timer overflow events to be used in the calculation of PPM
channel data.

CC3D tested, other targets may be unstable as a result. Needs further
testing.
Ported OpenPilot PPM frame validation.

On the CC3D it was observed that jitters were present, this code
validates each frame.

Prior to this, on other boards (Naze32/Flip32+/Olimexino/etc) it was
observed that when using an 8 channel RX AUX5-8 would sometimes be set
due to bad PPM data.

This code fixes both issues.
CC3D - Add WS2812 Led Strip Support (on S5_OUT)
Merge branch 'master' into cc3d
Calculate led grid size dynamically.
Fix WS2812 LED initialisation.

The timer was not being initialised correctly, it only worked by
accident due to timer configuration of other timer channels.  This
explained why TIM3 didn't work in the mapping exclusion for the CC3D and
why for the LEDs to work correctly TIM2 had to be specified so that TIM3
was actually accidentally initialised still.
Add simple LED animation when disarmed.  Fixed led grid size
calculation.