Lexer changes

Mostly minor things that rebasing is becoming painful.
Err, where are the rest of the `str` tests?