Change readCallback and readStart to be more efficient

* Use async_read_some instead of async_read and increase buffer usage to
   all of m_buffer, so that we read all available bytes [up to
   sizeof(m_buffer)], instead of just reading one byte at a time.
* Modify readCallback to parse all the bytes that were transferred,
   instead of assuming that only a single byte was transferred.