[remove] fix a regression introduced in 51d61d1940bdbfbae9ee1d2157f29f6708693b9b

When we remove a package, we do not expect to install all the missing optional dependencies.
[install] Use the version of package archives in the local cache.
corrects backwards subcommand synopses

The descriptions of update and upgrade seem to be reversed as is the description of the arguments that they take.
Improve the reporting of errors

Now the sub-processes states are kept until all the processing is done, and the errors are displayed at the end.

This also help the error-recovery: in case of upgrade, we reinstall the old package; in case of reinstall we are a bit stuck and we remove all packages depending on this one. This solution is not yet perfect, as it may lead to some inconsistent global state. Hopefuly this will not happen very often ...

This commit fixes #130 and partially fixes #131
Merge pull request #133 from pygatea/patch-1

corrects backwards subcommand synopses
Continue #133
Continue #133

update and upgrade take an optional argument
[switch] Keep some kind of backward compatibility in switch.

So now, the first instance of:

    $ opam switch <foo>

is equivalent to:

    $ opam switch -install <foo>

iff `foo.comp` is a valid compiler description.

Only installation of aliasing MUST be explicit:

   $ opam switch -install <bar> -alias-of <foo>

For consistency reasons, it is still possible to `opam switch -install <foo>` when `foo.comp` is a valid package description.
[opam-mk-repo] regenerate index.tar.gz in case it does not exists
[update] do not delete urls.txt on update
[list/search] improve the behavior of list search

Now:
    $ opam list foo

will return the package foo only, and not all the packages whose name contains foo.

Also:
    $ opam search foo

will return all the packages whose name or description contain foo.
Remove the pidfile after reading the error reported by a child process
[update] When updating a specific repository, do not display the new packages from other repos.
[update] Fix association between packages and repositories

Now, changing repository priorities in ~/.opam/repo/index + `opam update` works as expected.
Distinguish between upgrades and downgrades
[switch] continue 5632a1077eef9b7a5ef3dd15f1685943c528f578 by doing the checking for `compiler_current`
[install] new heuristic for the solver installer.

Previously, when trying to install an old package which would trigger a downgrade, the solver heuristic was a bit lost and tried to randomly change some other package versions.

Now the heuristic is the following:
* we first run the solver to find a consistent solution
* then, for all the new packages appearing in the solution:
  - if a solution with the most recent version of the package is consistent, then put the package in a bag
  - if the solution where all the packages in the bag are installed is consistent, then use it
  - otherwise, keep the original solution

This ensure that no independant package is changed when downgrading a subset of packages to fillful the requirement to install a new package.
[variable .opam] add the variable "man" for opam-repository
[variable .opam] add the variable "make" for opam-repository
According to #132, we use the option `--makecmd <program_to_run>` to substitute variables that are behind `%{make}%` (that are used in .opam, see #132).
By default, we take `gmake` for BSD and `make` otherwise.
Fix display of errors when the recovery function itself has an error