New lexer

This branch keeps only the lexer from the old branch, and not the new indentation changes.

This will be enough to parse comments.