[usb_serial] CDC USB Device driver for STM32F1/F4 (Lisa M/MX 2.1)

Contains:
* hw dependent implementation (arch/stm32/)
* examples:
 - serial console over USB
 - serial port, sending of large amount of data 
* based on libopencm3 example

Known issues:
* on some USB Hubs the device seems to have hard time to enumerate
* it also doesn't enumerate on Gumstix overo (`device descriptor read/64, error`)

*[ 6907.807027] usb 2-1.5.4: device descriptor read/64, error -110
[ 6918.001890] usb 2-1.5.4: device descriptor read/64, error -110
[ 6918.190123] usb 2-1.5.4: new full-speed USB device number 86 using ehci-pci
[ 6928.280821] usb 2-1.5.4: device descriptor read/64, error -110
[ 6928.469443] usb 2-1.5.4: device descriptor read/64, error 2
[ 6928.657313] usb 2-1.5.4: new full-speed USB device number 87 using ehci-pci
[ 6928.679084] usb 2-1.5.4: device descriptor read/8, error -75
[ 6928.797360] usb 2-1.5.4: device descriptor read/all, error 8
[ 6928.885710] usb 2-1.5.4: new full-speed USB device number 88 using ehci-pci
[ 6928.906215] usb 2-1.5.4: device descriptor read/all, error 8
[ 6928.908962] hub 2-1.5:1.0: unable to enumerate USB device on port 4
[ 6954.882391] usb 3-2: new full-speed USB device number 2 using xhci_hcd
[ 6954.901079] usb 3-2: New USB device found, idVendor=0483, idProduct=5740
[ 6954.901090] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6954.901096] usb 3-2: Product: CDC-ACM Demo Lia
[ 6954.901101] usb 3-2: Manufacturer: Black Sphere Technologies
[ 6954.901106] usb 3-2: SerialNumber: DEMO
[ 6954.901326] usb 3-2: ep 0x83 - rounding interval to 1024 microframes, ep desc says 2040 microframes
[ 6954.901713] cdc_acm 3-2:1.0: This device cannot do calls on its own. It is not a modem.
[ 6954.901764] cdc_acm 3-2:1.0: ttyACM2: USB ACM device
[ 7018.181917] usb 3-2: USB disconnect, device number 2*
`
This seems to be related to either libopencm3 drivers, because I have also STM library based implementation of CDC device and that works every time (both on PC and Overo).

Necessary step towards USB telemetry. That is giving me hard time because of all macros that are involved.


Good call, that fixed it (see comment below). although VCOM_putchar() checks if there is enough space in fifo, and if not it automatically calls VCOM_transmit_message(), so it is probably the way telemetry calls transmit and send functions