split parser into grammar and parser objects

also, added comments to the tokenizer
make std::pair-based types more descriptive

just some simple wrappers around pair to add named setters/getters
parsing?

SLR parsing is functional, I think
Still need to figure out this lookahead stuff but this is a big step!