Merge pull request #1336 from rdicosmo/dose-trunk

Update external dependencies to dose 3.2-rc1 and ocamlgraph 1.8.5
Makefiles: handle DESTDIR

Closes #1369
Merge pull request #1380 from OCamlPro/destdir

Makefiles: handle DESTDIR
Opam-admin make: don't build archives for dev packages
Merge pull request #1381 from OCamlPro/no-dev-archives

Opam-admin make: don't build archives for dev packages
Skip unneeded costly computation of transitive reduction

Gives a huge speedup on some trivial requests (1.49s -> 0.67s on my example, trying
to install an already installed package)

Ref: #1363
Merge pull request #1383 from OCamlPro/faster-better

Skip unneeded costly computation of transitive reduction
Cleanup formula handling

* Empty should, by construction, never appear within a non-empty formula
* Correct parens when printing
Cleanup parser memory tables
Fixed interactive update of metadata on pinned packages

fixes initialisation too
Print the package versions on 'opam pin list'
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 patch 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.
Fix dev package data cleaning
Shorter 'make tests' output

makes it much easier to see which test failed
More consistent command-line options for pinning

This introduces 'opam pin add', 'opam pin remove', 'opam pin edit' while staying
mostly backwards-compatible with the previous commands
Handle pinned package upgrade from 1.1
Show * next to pinned package versions in actions
Merge pull request #1343 from OCamlPro/pinned-is-not-a-version

Refactoring: removing the 'pinned' package version
Fixed 'opam unpin'
Merge pull request #1390 from OCamlPro/fix-unpin

Fixed 'opam unpin'