Refactoring: removing the 'pinned' package version

Quoting #1297:
> The current way of handling pinned packages is through the special
`OpamPackage.pinned` version. It involves looking through `state.pinned` to
find out the kind of pinning and the actual version of the package.

> This involves a lot of back and forth conversion and mixup between the
`pinned` and the real version of the package (obtained through
`OpamState.real_version` and `OpamState.pinning_version` respectively).
This leads to several fragile areas and is difficult to track: client areas
use `pinned`, except often they need the real version, and the solver
always wants the real version, but we convert back once we get the results.

The main issue was that, both having the same type, they would get mixed
and compared, functions would expect one and not the other, etc.

This PR completely gets rid of OpamPackage.pinned. Packages are always
referred to by their version. One can query a name against pinned packages
to get its version (this involves looking through the overlay). Pinned
versions are marked as available, and other versions disappear from the
universe given to the solver. If p is pinned to v, then p.v metadata is
consistently replaced by the overlay, wether at a point where you care
about pinning or not.

For now, most messages will display the version instead of 'pinned', but
more info has been added to "opam list" and "opam pin", so I am not sure it
is really an issue.

This passes all (current) tests, and will hopefully make things much more
robust.

This is unoptimised yet, the pinning version not being cached in the loaded
state, but this is unlikely to have any impact unless you have hundreds of
pinned packages.

**WARNING**: this also slightly changes the format of the .opam dir,
packages+version having been replaced with simpler package names at some
points in the code.
- `%{switch}%/packages.dev/`{`<name>` instead of `name.pinned`}
- `%{switch}%/overlay/`{`<name>` instead of `<name>.pinned`}
- `%{switch}%/installed` and `installed.roots` now contains only real versions,
not `pinned` anymore. This is more informative and you may actually have a
version different from the one pinned installed (if you refused to upgrade
after pinning).

There is no automatic upgrade of the format at the moment, so you may
encounter some glitches if you were using pinned packages.