Change GetNextToken to take a io.RuneReader.
Add ResettableRuneReader.
Implemented Reset().
Extract methods for readability.

Rename alreadyRead->buffer.
Implement Discard().