Added Test for Symmetry in Mirroring

Appended an addition check for reversing the mirrored object to ensure
it is the same as the original.
Created new Shred.Data.cs Partial Class File

Shred.Data will deal with all the data/comparison information and
handling as well as be where the querying interface shall be
implemented.

ChamferSimilarity -> Compare()
Utilities.Max was added to modularize the code in the Shred.Data file
added necessary test
Restructured Comparison->Data

Data is an object that holds all the comparison data.
EdgeData -> Side is a way of representing the state of an edge
Implemented Query Interface(NotTested)

Given a Data Object, one can query a Shred for whether it is a feasible
match.  This works in the following way.

We get the Shreds in question.
We get their roots and ensure they don't match
We get then take the query, converted it to the orientation
Check if it matches, and build a query that does match.
Finally we ensure that the edges in question are available for
the given query direction
Changed Query To Static Member (NotTested)

This allows us to in a more generalizable way, query a data object
with this static member;
Added Match + Mirroring in Cluster Construction

This shouldn't have any affect on the anything else because it was
added with default value in the constructor. Therefore it won't break
existing test.