Better 'opam upgrade --fixup'

We used to be just minimising changes without adding packages to keep
as was originally suggested by @rdicosmo. The issue with that is that
up/down-grading isn't privileged over removal.

Specifying packages to keep can fail though, so we now first try to
keep everything, then retry the solver while reducing our
expectations, until successful.

Closes #1918
Merge pull request #1926 from OCamlPro/better-fixup

Better 'opam upgrade --fixup'