Hush "LICENSE missing" warning
observe_eq, observe_eq_and

It was hard to remember the type of observe_eq, because its name makes
it look as if only the equality is observed. Since in fact it is both
equality and possibly a second arbitrary observation which is observed,
that function has been renamed to observe_eq_and.

A new function named observe_eq, based on observe_eq_and, has been added
to implement the simpler, equality-only observation.
eq_and_more `on` f

The functions observe_eq and observe_eq_and both had an embedded lmap.
It is better to let users use lmap themselves if they need it, but
unlike fmap, contravariant mapping is likely to be unfamiliar to users.

Thankfully there is a function, Data.Function.on, which is more familiar
and which has a similar meaning. Our version, Control.Commutative.on,
applies on commutative functions, while Data.Function.on applies on
ordinary binary functions.

One last change: since (observe_eq_and `on` f) sounds wrong when
pronounced, observe_eq_and was (again) renamed to eq_and_more.
generalize the type of `on`

It works on any profunctor, not just Commutative.
sort2

An obviously-commutative function: sort the two arguments.

Sorting is also the basis of the two other primitives, but they need to
behave specially then the two arguments are equal.
Data.Unordered

Instead of using primitives, it is much more convenient to make one or
more arbitrary observations on each argument. For this to work, it must
be possible to hide which observation comes from which argument; those
types for which this is possible are called "Unorderable", because it is
possible to remove ordering information from a pair of observations.
Update README to use `on`
fix typo in README code
Fix type error in README
Reimplement README in demo
Doctest the README examples
No longer a work-in-progress

I mean, the code in the README actually runs, and its tests pass!
How mature is that?