Replace forall'ed Coercible by ~R# in RULES

we want a rule "map coerce = coerce" to match the core generated for
"map Age" (this is #2110).
In CoreSubst, optimize Coercible values aggressively

just like boxed type equalities.
In simpleOptExpr, unfold compulsary unfoldings

such as that of coerce.
Add Case TyConAppCo to match_co
Test case for RULE map coerce = coerce

(This tests #2110.)
Use exprIsLambda_maybe in match

when matching a lambda in the template against an expression. When
matching, look through coercions (only for value lambdas for now), and
look through currently active unfoldings, if these are undersaturated,
i.e. produce a lambda.

This replaces the existing, somewhat fishy eta-expansion.
Test case: Looking through unfoldings when matching lambdas