Reads a single character.
The default implementation uses read on a one-character buffer.
Reads up to len characters into cbuf starting at offset off. Returns the number of characters read, or -1 if the end of the stream is reached.