Use tokenized parsing

* We get comments and whitespace slurping for free-ish!
Move Main to rudimentary test suite
Builds out some of the type API for evaluation