Issue #8: Added support for variable substitution.
Issue #8: Improved documentation, error handling and code analysis issues.
Made Tokenizer more readable

Refactored the original parse loop into a state machine, extracted
if-expressions into named methods, made variable names more expressive.
Merge pull request #12 from codecentric/feature/variables-tokenizer

Issue #11: Refactored Tokenizer
Merge pull request #9 from codecentric/feature/variables

Issue #8: Added support for variable substitution.