Simplify even more opam/cudf conversion

and handle pinned packages with a dedicated cudf field,
which supersedes #1220.

No more conversion maps passed around (except for existing version
numbers, where it is really needed), and we now get the flexibility
required to handle atoms (eg 'pkg>version') in requests.
Fixed bug with cudf conversion and pinned packages
Allow more expressive package requests from the command-line

Closes #380 :
this allows to specify `pkgOPversion` and not just `pkg` or `pkg.version` as
before. Useful to manually request prerequisites for example, like `depA>=3` or
`depB<1.2`. This may also allow to get a better explanation when a prerequisite
is not available for some reason (when opam says `can't install A because B<1.2
is not available`, it's natural to try `opam install "B<1.2"` to understand why)

Does not yet allow more advanced requests, like logic formulas, though. This would
require deeper changes in the way we push requests through dose.

Also includes quite a bit of cleanup in OpamClient and the way we parse command-line
package arguments.
Add handling of advanced requests for upgrade too

See discussion a #1241: we need to measure the benefits of this.
Note that with the previous patches and not this one, requests like
 will be _refused_.
Much better and consistent error messages on bad package specs
Fix a query check that was too strict on upstream-removed packages
Merge pull request #1241 from OCamlPro/more-expressive-requests

Allow more expressive package requests from the command-line