Lexer changes

Mostly minor things that rebasing is becoming painful.
`self.nextch().map_or(true, |c| c.is_digit())` *shrug*