Lexer now maintains a copy of the remainingSource as it passes through
Merge branch 'master' into lexer_performance_improvements
Refactored the Lexer to use a simplified manner of advancing through the source (i.e. less manual calls to source.substring(..))
Moved a lot of the source traversal code from the
Lexer into it's own class (TemplateSource.java)
fixed broken unit tests with last commit
Added tests for error reporting and more code cleanup with the Lexer
Added tests to ensure that newlines are standardized and counted
properly