Reads a single byte from the source
Allows calling code to pool buffers and pass them in for improved performance.