Handle variance better for implementors of the Eq interface

I was probably being a bit to strict in terms of doing variance checking
on classes that implemented `Eq`. I've become more lenient so that primitives
play nice with `Eq`s now.