Add leibniz to Unapply

We can remove some cases where we write `a => U(f(a))`, where `U` is effectively identity, with Leibniz.  This replaces the `apply` methods in various `Unapply*` traits with `leibniz`, and demonstrates this usage in a couple of places.

This is compatible with existing users of `Unapply*` instances, but not definitions of said instances (which are easier to write as a nice side-effect).