Refactor Token enum
Created by: ecoulson
This is the top level issue for refactoring the token enum. Introducing the token type to be an enum seemed fine at first for building the tokens in the lexer, however, now that work has begun on the parser it has become clear that some behavior is common between tokens such as getting the file position. Creating a token struct that contains an enum and file position would solve this problem and reduce the amount of code.