Update package description
add keywords ValueObject and DataTransferObject, and mention these in the description too.
Explicitly seal Equals+GetHashCode
Include a simple benchmark
Update benchmark
More systematic benchmark
Use reference check for null check
this is much faster than delegating that to the full op == implementation
Optimize FieldwiseEquality

When the type is a primitive or has a custom == operator, use that to compare values.
These operators are generally the fastest.
Otherwise, if the type T has an instance method Equals(T obj), use that.
This instance method avoids a cast, and is commonly implemented due to IEquatable<>
only if all else fails use object.Equals; it's slower because it needs a cast and virtual method lookup.