Comments, cleanup, bugfix in FarPeekTextReader

Several changes to the FarPeekTextReader:

- Added some comments describing functions
- Coding style changes to some parts
- Fixed a bug where a FarPeek would unset EOF
- Added comment describing bug fix.
Added "Done" message to tests

The TestHarness now prints "done" when it finishes, since otherwise it's
hard to tell the difference between all tests completing successfully or
a test getting caught in an infinite loop.
Added more FarPeekTextReader tests

- Check if reading through the stream works
- Test Peek, FarPeek, Read sequence works
- Verify FarPeek doesn't unset EOF (regression test)
Added TokenReader class

The TokenReader handles reading tokens out of a FarPeekTextReader so the
TagStream doesn't have to. Now the TagStream can focus on parsing
strings into TagDatas and the TokenReader can focus on reading those
strings.
Rename TokenReader to TagReader

TokenReader was designed for reading tags, not tokens, so the name
TagReader makes more sense.
Changed TagStream to use TagReader

The TagStream now uses a TagReader instead of trying to read from the
stream itself. Now it only contains logic for parsing strings into
TagDatas and delegates reading to the TagReader.