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.
I'd probably use a trait instead, then you don't have to repeat the super call in every subclass:

```
trait Finding {
  def line: Int
  def char: Int
  def severity: Severity.Severity
}
```
... later ...
```
case class UnclosedCommentError(line: Int, char: Int) extends Finding {
  def severity = Severity.Error
  def msg = "unclosed comment"
}
```

Plus, it's a good idea to only use `def` in traits, because then  the subclass has more freedom to pick the right implementation for it.