usb: Support for MIDI class devices

Provides all of the config descriptors for MIDI class devices together
with a sub-set of the audio class shufficient to put together a full
fledged MIDI device.

Also requires is an extension to struct usb_endpoint_descriptor to allow
class specific endpoint descriptors to be expressed. All of
libopencm3-examples use the USB_DT_ENDPOINT_SIZE (rather then sizeof on
the structure) so there should be no compatibility problems with this
change.