Added UART_TRACE facility

I added a UART_TRACE macro which can be enabled by defining
UART_TRACE_ENABLED. The trace data can be viewed using gdb.

Signed-off-by: George McCollister <george.mccollister@gmail.com>
Stop ctrl update attempts after 50 failures

If the host doesn't have the ACM open ep_write_packet will fail. After
50 failures stop trying to send.

Signed-off-by: George McCollister <george.mccollister@gmail.com>
don't enable/disable IRQs needlessly, add tracing

Signed-off-by: George McCollister <george.mccollister@gmail.com>
Use my fork of libopencm3 that includes USB fixes

Signed-off-by: George McCollister <george.mccollister@gmail.com>
If usbd_ep_write_packet fails, do it in usb_in_cb

If usbd_ep_write_packet() fails to send to the end point due to it not being
ready while sending characters received on the UART to the USB host,
leave RX DMA, UART and timer IRQs disabled and call
usbd_ep_write_packet() again in the USB IN callback.

Signed-off-by: George McCollister <george.mccollister@gmail.com>