Strict equal checking

When comparing two objects one must compare more then just the hash of the object, we also must compare the underlying objects in the case of hash collisions.

Since the previous version was ignoring hash collisions, by default the new version will default to non strict hash checking.