Big refactor of the changes I was attempting to make to TypeCheckedTripleEquals
out of there and into CheckedEquality, putting TypeCheckedTripleEquals back to
where it originally was. That way no existing code should break at all, but
users will get a deprecation warning for the *TripleEquals traits. CheckedEquality
uses EqualityConstraint, not Constraint, and that's the one with all the new
implicits in the companion. Constraint now again looks like it does in 2.2.1.