Small types update.
Massive update to how Lexer.next_char() and Lexer.consume_char() work. Now returns an option of a char to better check for EOF without tossing eof checks everywhere.