Emphasised IEqualityComparer members are a pair

A correct impl of IEqualityComparer needs to implement all members in a
semantically correct manner
Replaced unsafe IEqualityComparer GetHashCode

GetHashCode must not incorrectly bucket objects for a consumer of
IEqualityComparer [`1] to be able to rely on the result of Equals solely
on objects bearing the same hash code being authoritative