Merge pull request #38 from jspam/017-exit-code

Exit the main application with a status code.
Added identifier cache.

Identifiers are now cached for faster comparison. Note that the equal's
method of case classes will first check for reference equality, so
Identifier.equals doesn't have to be overwritten.
Merge pull request #39 from Stoeoef/dev2

Added identifier cache
Lexer: Replace Stream input with custom line-based mutable input reader
Lexer: Inline lexSymbol into lexToken to make them tail recursive
Eliminate any sources of buffering the whole program

* replace Streams with Iterators
* findings and success are now dependent on the current iterator position
  * therefore have to rearrange evaluation in unit tests
* make Lexer.dumpResults() lazy line-based