Added More INode tests + Fixed Root() bug

The get Root() method was implemented incorrectly because there
was not base case to the recursion

The cluster constructor was change around a bit to ensure everything
gets reassigned in the intended order.
Added Mirror Testing + Fixed Implementation Errors

All the previous swaps where very stupidly implemented wrong.
Mirror testing is done by creating two identical tree and mirroring,
then checking that the hieght/orientation/direction of each cluster
matches.
Added Comparison Class

This is intended to hold all the data for comparison.

However the implementation will probably need to be changed
to a struct