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 this on flyingf3, discoveryf4, freedom and sparky prior to rebasing this onto latest next.