Improve USB CDC ACM transfer performance

When I used Physicaloid library with Arduino Uno, an application on an Android dropped some data from Arduino. Here is my changes,
o lock the ring-buffer mBuffer when it is read and written,
o reduce number of Nofity (onRead()) when small data is received,
o use a write buffer to reduce number of USB transaction when small data are written in short period.