Simplify lexer whitespace handling

Trailing spaces were causing the lexer to crash. Now all spaces at the
beginning of a token are removed and ignored. The parser will treat end
of input as a newline, but knows not to keep requesting tokens once it
encounters the end.

A second bug in the lexer that was jumping back too far when a number
was overlexed has also been resolved.