Rename (:=:) to (:~:) and add Data.Type.Coercion

Bikeshed color chosen by core libraries committee

Knock-on effects:

* Made the instances for Read, Enum, Data and Bounded for (:~:) more robust
* Renamed Data.Type.Equality.coerce to subst. It collided with GHC.Prim.coerce from Coercible.