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.
Only the first test should begin with `"The lexer"`, all following should just use `it`. The output will then be formatted like this:

```
The lexer
 - should ...: PASSED
 - should ...: PASSED
```

(It might be formatted this way too when using the string constant everywhere, but it also clutters the test.)