Began creating grammar setup

The parser will allow you to pass it a grammar to parse.
This commit defines some of the types we will use.
The massive number of file changes are because we are now forcing
both tokens and non-terminals to share an ID type,
which will make defining the grammar simpler.
Set up doxygen, added some comments