CircBuffer: move USBSerial buffers into USB ram to conserve main ram
CircBuffer: use actual size specified, report free space correctly
USBSerial: enough room in buffer for 2 full USB packets, plus a little extra to maintain alignment
USBSerial: call USBHW::usbisr() to drain queue when necessary
SimpleShell: cat: use puts instead of printf("%s") for efficiency
USBSerial: remove redundant commented code
Merge branch 'feature/USBSerial-works-outside-ISR-context' into edge