Lexer refactor to use a state stack, working at parity with previous version
Lexer - support arbitrary nested levels of python and pyxl