Made factory usage generic.

Override GetHashCode as per C# rule/guideline when overriding Equals.
TypeChecker now working with separate classes using dynamic dispatch. Make nodes instead later (utilize object algebras as implemented).
Added comments to the dangling else so you know what'll happen to it during parsing.
Reworked code again. Now even more generic/portable/extensible :O

Extensible algebra combinators is being utilized to run multiple algebras together.
Moving type checking is currently a WIP. Skeleton has been set up but it has not yet been moved over. Currently it still works utilizing a central class + dynamic dispatch.