Add ihex parsing library
Set flash region size to actual bootloader size
Add USB CDC_ACM driver to repo
Remove *.d files from repository
Add queue implementation for USB driver
Update gitignore
Add missing USB OTG header
Add image utilities

These are used to discover and execute firmware images on the device
Add app info header

Holds the common application info block (shared with firmware)
Add USB upgrade agent

This is the meat of the communication and flashing logic
Add array_size macro to utils
Add fw_update script

This relies on autogenerated files from the build system
Update main.c and Makefile

The firmware should now build cleanly
Delete unused ihex library
Ignore autogenerated files
Add tx flush and critical section around receive in USB
Fix tx_flush in USB code

Also: Slight modification to fw_update script
Add ability to force bootloader with GPI
Add hooks for software bootloader command
Refactor fw_update script