Lexer work & initial compiler work

Mostly restructuring existing code