Add parsing logic for class declarations

Includes the following changes:
* add parsing methods relevant for class declarations
* add EOF token to lexer
* change behavior of lexer so returns a stream of Token instead of Option[Token]
* add recovery to lexer -- lexer will skip until it sees whitespace or EOF if it sees invalid tokens
* add tests for lexer recovery
Note: I think we should move `_findings += new Parser.UnexpectedTokenError(currentToken)` into a method `unexpectedToken()` that could also engage panic mode. But it is not necessary to do that in this PR.