Add AnalysisResult and Finding classes.

The AnalysisResult class is intended to hold the results of the analysis
phases (lexical, syntactic and semantic analysis).

In order to allow for a "pull parser" model where the parser starts
before the lexer has finished, the results and the findings list are
implemented as Streams.

There is a lazy val success that invokes a callback. This callback
should advance the analysis to a point where the success of the phase
can be determined.

The findings are supposed to be subclasses of the abstract Finding
class. They can take parameters and can output a description of the
finding.