Implement the lexer

Since it's pretty much my first non-trivial piece of Scala code, more than one person may want to review this...

Fixes #19.
Additionally, not all ASCII whitespace (such as '\f') is declared as such in the spec. Added a test case.