Improvements to DeepEqualityComparer

 - Implementations of IDictionary and IDictionary<,> are handled properly now. Their items are hashed together so that the resulting hash is the same no matter what order they're in.
 - Respect when an object implements IEquatable<> or overrides the Equals/GetHashCode methods.
 - An object's type is included when calculating its hash code.
 - Include fields (instead of just properties)
 - Allow for customizing an instance of DeepEqualityComparer
   - String comparison
   - Member locator (choose which properties/fields to include according to type)