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.
Added, thanks. There's still some mutual recursion between lexToken and lexSymbol - I could inline the latter to break it up.