Don't display auto-conflicts in the conflict explanation.

That's very spammy and not very useful as we cannot have two packages with the same version anyway.
Rationalize the code for updating repositories (#622)

Right, every backend should now have to implement only 3 actions, with a much simpler semantics.

We already had:
- pull-repo: Update a repository with this backend type
- pull-archive: Download an archive file for this backend type (always return a filename)

and now we have:
- pull-url: Download the contents of an url, return either a filename or a dirname, depending of the backend type.

And 'pull-url' is used:
- when reading url's file contents to download a package
- when a package is pinned to a given path

The current backend's behaviors:
- HTTP backends can only 'pull-url' files
- GIT/darcs/HG can only 'pull-url' directories
- LOCAL (rsync) backends can either pull files or directories (that's easy to test with [Sys.is_directory]).
Use input_channel instead of buffering the intermediate string when reading files.
Speed-up reading of state.db
Speed-up 'opam list'
Added post-messages support in packages
and returning more information about what has been done
Added local variables to pass success status to the post-messages