Implemented IsMatch w/ Working Test

Restructured the IsMatch to return a new ClusterData object.
The cluster data object returns the directions of the matching objects
and the nature of match either, inverted or noninverted.

The mirroring log was removed from the constructor

The test explicitly builds a tree and tests its validity throughout
Shred to Shred
Cluster to Shred
Clustter to Cluster
cases were all tested.

Include inverted and non inverted matchs.

Added a print flattened tree helper to make inspecting the output
easier.