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.
Are line breaks included in c.isWhitespace? We need to process those separately (to set line/offset).