Lexer changes

Mostly minor things that rebasing is becoming painful.
I don't think `use ast;` needs such detailed documentation! (should be `//!`)