stm32f4: usb_midi: Introduce example MIDI firmware

Tested on STM32F4Discovery with Linux host using both amidi (raw
messages to/from device) and a synthesizer (note on/off).

This example depends upon changes to libopencm3 and should not be merged until the libopencm3 submodule includes the following:
https://github.com/libopencm3/libopencm3/pull/309
It's not my preferred style for normal code.

However when writing examples I prefer to minimise the jumping around within a file needed to comprehend it. Using a static here means we don't have to find the call site to figure out if button_state is used anywhere else. Its all there on the screen at once.