Fix the solver behavior in case of choices with conflict.

Moreover, when we a package is an implicit dependency, we try to keep as much as possible the version already installed.

This is done is 4 steps:

1. we explore the state space only for the package explitely given on the command-line
2. we iterate on the installed packages which are in the dependency cone, to check if they are still installable
3. we order the remaining packages in the dependency cone by version number (to favor newest packages instead of deprecate ones) and we incrementally explore their state space to check (i) if the package is really necessary and (ii) find the best version available
4. we incrementally iterate the already installed packages (not in the dependency cone) to check whether they need an upgrade (or a downgrade)

This is to work well on my limited testing (eg. after playing a bit with old versions of core, cow and oasis2opam)

Fix #480
Update debug statements
[Client] packages can specify messages to print during summary

Add a messages field that allows to describe which feature is missing
when an optional dependency is not installed (issue #572)

For instance:

    messages: [
      "The optional realizations and why3's coq plugin will not be available since coq is not enabled" { !coq:installed }
      "The optional selection hypothesis plugin will not be available since ocamlgraph is not enabled" { !ocamlgraph:installed }
    ]

Reviewed by @samoht
Improve the syntax of filters.

Now is should be similar to the build field, where "%{X}%" can be shortened to X. Also, allow `!`

This is useful for #572
Update CHANGES
Update CHANGES

(related to #582)
Improve the evaluation of filters.

* the evaluator is now typed
* type errors are displayed to the user on eval, but are not-blocking
* foo+bar:installed works again
* the hook to overwrite a package variable contents is now $OPAM_<package>_<variables> (instead of <package>_<variable> which was ambiguous)

This is related to #572
Update the dev manual

Fix #572
Fix m4 macros to disable version and certificate checks
Fix #579

(This is also related to #564)
Quiet OPAM on init when it builds the base packages
Catch sys-break when readingg user inpu
Add some helper functions for shell names
Improve the message displayed to the user on `opam init`

This should fix #564
Change API.SWITCH.list option name (`installed` instead of `installed_only`)

This is to look similar to next commit.
Simplify the API.list call and fix #584
Update CHANGES
`opam search` now looks into the tag list as well

Fix #535
Update CHANGES
Fix display of internal errors