Fix usb serial

Fix 3 major bugs:

1. use the buffer pool of ringbuffer as the sending/receiving buffer of the USB endpoint.
2. terminate the transaction with zero-length-packet if the last packet is 64 bytes long.
3. don't let the SOF event disturb the sending transaction.