[CDCACM] Converted the CDCACM descriptors to macro templates.

All of the repetition was causing confusion. While the differences
between the descriptors are very minimal.

We should consider generating those descriptors in ram and eventually
releasing them after we are done. But for now we have to generate them
the way we do as it is smarter to keep them in flash and not keep
allocated space in ram for their one off use.
[Ring] Added ring buffer implementation.

This implementation is adapted from open-bldc libgovernor. It has there
a unittest coverage that still needs to be copied over here. The ring
buffers are meant to be used for communication pipes between modules of
the usbrf implementation.
[multi usb test] Added the skeleton of the multi usb cdcacm test.