Added SourceStream class
It's now easier to work with the input source code and the Lexer is less cluttered.