Initial implementation of equality comparisons using TypedFields.

For now, there's no way to specify that a field (such as an ID) is not to be compared,
but that should be added shortly.
We don't want object to compare equal just because they have no fields

For the mean time, this will affect ObjectProperties subclasses, since the base ObjectProperties class has one Typed Field. For now, don't use equality comparison on these types