Add implicit symmetry and transitivity to =:= and <:<.
Add combinator methods & implicits to =:= and <:<

This commit adds the following, with no casts:

* <:<#compose
* <:<#andThen
* <:<#liftCovariant
* <:<#liftContravariant
* <:<#replaceCovariant
* <:<#replace

* =:=#inverse
* =:=#compose
* =:=#andThen
* =:=#lift
* =:=#replace

Also defined are implicit versions of `compose` and `inverse`.

This means equality is now an equivalence relation:

* Reflexivity (already existed)
* Symmetry
* Transitivity

<:< receives these as well, except symmetry.  Both also allow
"lifting" into type constructors, though <:< may only be lifted into
co/contravariant type constructors.

A =:= can also be safely demoted to <:< via 'replace' but this is not
included in these methods.

Addresses:

* https://issues.scala-lang.org/browse/SI-4040
* https://issues.scala-lang.org/browse/SI-5499