Custom CDC implementation

Removed native (hardware) CDC handling and implemented one using core
functions. This allowed to implement CDC features that were working
incorrectly when using native CDC handling. As of now there are no STALL
or NACK usb packets and SetLineCoding works as it should for the UART
bridge.