Change the way we detect existing commands

`which` seems not very portable, so use `type` instead, because "type is standardized in POSIX" (thx @dbuenzli).

This should fix #471 and improve the BSD support.
Update CHANGES
teach opamGlobal and opamSystem.patch about NetBSD and DragonFlyBSD
Revert "Change the way we detect existing commands"

This reverts commit e157b5fd1e1bbe1749b2440487d3b7995592f356.
Merge pull request #480 from adegroote/more_bsd_support

Teach opamGlobal and opamSystem.patch about NetBSD and DragonFlyBSD
Improve the API. There are still some global state (the main one being the filesystem -- it will be quite hard to abstract other it I'm afraid) but it's now easier to do all of the action available on the command-line using the API.

An example:

   let pkgs = OpamPackage.Name.Set.of_list [OpamPackage.Name.of_string "core"] in
   OpamClient.API.install pkgs

The message are still displayed on stdout/stderr so that could be a bit awkward.
Merge branch 'master' of github.com:OCamlPro/opam
Update the HTML docs
Update the man pages
Update the tutorials
New tentative fix for #471 (woud be easier with a test machine)
Remove 'opam remote' as it is replaced by 'opam repository' since 0.9.0

Remark: if you find 'repository' too long, you can use 'opam repo' instead (as cmdliner looks for matching commands with the same prefix)
Fix #471
Update dev-manual

This should fix #468
Refactoring
Reindent (no other changes)
Add a 'tags' field in OPAM files.

This should help resolving part of #483
Add (very basic) man pages for opam-mk-repo and opam-check

This should fix #432
Update to latest version of ocp-build

https://github.com/OCamlPro/typerex/commit/aa9b6c733104df6c0b6fc7f1551d4dadeb26744b

Fix #484
Fix copy/paste error (thx to @dbuenzli)