New common bootloader implementation for F3/F4

Notes:
* New bootloader is backward compatible with old BL protocol and old firmware.
* F1 boards continue to use the old bootloader.  New BL doesn't fit on F1.
* Bootloader protocol is documented in flight/Doc/Architecture/dfu.txt
* New BL uses flash partition API.
* Now includes an FSM.
* Same fancy LED pulsing :)
* Way less copies of the bootloader.

This BL will be the basis for features like OTA and new forensic debug features like reading raw partition data to a file via GCS.

I've tested these on ubuntu 12.04:
* FlyingF3
* DiscoveryF4
* Freedom (rev1)
  * ````make -j 8 all_freedom BOARD_REVISION=0x1````
* Quanton
* Sparky
* CC3D
* PipXtreme
* Revolution (rev1 and rev2)
  * ````make -j 8 all_revolution BOARD_REVISION=0x1````
  * ````make -j 8 all_revolution````
* Revomini (rev2)
  * ````make -j 8 all_revomini BOARD_REVISION=0x2````

Via IRC:
* Sparky on ubuntu 64-bit
* FlyingF3 on mac
* Sparky on mac

Fixes #335.