USB to Serial with RS485 driver control

Based on ST's app note and the existing examples.

This relies on https://github.com/libopencm3/libopencm3/pull/246 being merged, and _this_ pull cannot be merged without it, as it doesn't include the update of the submodule.  It is here in it's present form for review, but will be updated with the submodule update later.

This also starts to split up some of the usb cdcd code that is copypasta all over the examples tree to have more chunks that can be shared