Cleanup conflicts interface

Use an abstract type and a library fun rather than returned functions within a variant...
Add 'opam upgrade --fixup' and print helpful messages when the universe is inconsistent

Not very satisfactory without an external solver though, the command will just fail... We could fallback to
removing any troublesome package but that'd need more effort
don't advertise --fixup when not available
Merge pull request #1461 from OCamlPro/opam-fixup

Add 'opam upgrade --fixup' and print helpful messages when the universe is inconsistent