* Refactor
* Updated TreeNode system to use abstract base class and inheritence
* Updated unit test coverage
* Improved code coverage
* Added missing files
* Done some initial modification of the code, removed a redundant check in GetNextChar. Updated some comments
* Initial refactor: Cleaned up remaning comments