Adding new inteface method, PeekToken, to Lexer
Adding Lexer factory to read file and output a Lexer

* Static factory that takes a file and creates a Lexer
* Lexer's constructor now takes universal reference (cause why not)
* Lexer has new interface method "PeekToken"
Adding new method for token to pretty print token type