bl: docs for bootloader protocol
bl unified: unified bootloader implementation for F3 and F4
bl unified: add capabilities message extensions

Extends capabilities message to explicitly describe all of the
partitions that the BL has access to.
bl unified: add support for wiping a partition
bl unified: add support for read/write waypoints partition
f3 usb: extend USBHOOK API on F3 to include PIOS_USBHOOK_Deactivate

This empty function is required so that the common BL image can
safely call this on all platforms just prior to jumping to FW image.
bl unified: make discoveryf4 use unified bootloader
bl unified: make flyingf3 use unified bootloader
bl unified: make flyingf4 use unified bootloader
bl unified: make freedom use unified bootloader
bl unified: make quanton use unified bootloader
bl unified: make sparky use unified bootloader
bl unified: make revomini use unified bootloader
bl unified: make revolution use unified bootloader
bl: remove (now) redundant bl implementation files for F3 and F4 boards
bl helper: remove write support for F3 and F4 targets

F3 and F4 boards are now all using the common bootloader which
does not rely on the BL_HELPER for writing to flash.
bl_helper: fix inverted logic for F1 flash writes
bl: switch to per-soc-arch bootloader builds

This allows for a single definition of the bootloader for
each of the SoC architectures (F1,F3,F4) and removes even
more of the code duplication for F1.
hw_defs: wrap all flash related structs with config options
hw_defs: query flash partition from board_hw_defs.c

This allows for an abstraction of the details of which
specific partition table applies to which board variants.

This is most applicable to CopterControl which changed
flash parts between rev1 and rev2.