* Completely rewrite whitespace handling in lexer (fixes #36).