Split the code up into modules, so that I can begin work on a separate module for a parser
Change the lexer being its own module, and update it to be an exported class to make it easier to consume