Initial commit.

Todo:
* CharacterStream tests
* "valid expression" check
* Look for more pathological inputs!