Port old DFU code to the new codebase

This commit partially ports the old DFU implementation code to the
code of the milliboot. For now only firmware uploading is supported.

Singed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Modify USB code to adapt to the latest API in libopencm3

Change in the code corresponding to my change in libopencm3.

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Add basic support for DFU_DNLOAD request

This commit add support for simple uploading of the firmware form the
PC to the microcontroller. This code lacks CRC calculation and is
still far from usable, but it loads the data into the flash memory and
successfully verifies it.

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Change O0 to Os, since otherwise milliboot binary is larger than 12K

Singed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Add support of DNLOAD request

This commit adds a first pass implementation of the firmware flashing.
It also adds simple test application that blinks LEDs.

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>