Type checking separated from the parsing.

Added unit test project with 3 simple tests.
Overriden Equals in all base node classes otherwise Equals would only be true if the instances are the same. Now checking whether contents are the same instead.
Merge branch 'Omar_Recovery'