Cleanup, document and improve sub-command handling

Addresses #1458, #1462, generates better man-pages and error messages, and
sanitises some commands.

There may be some small incompatibilites that could break scripts though:
- 'opam switch exec': passes args directly, no String.split: the command shouldn't be quoted anymore (enables correct escaping; use -- for command arguments)
- 'opam switch import|export': now have a _mandatory_ FILE argument. '-f' no longer accepted.
- 'opam pin': backwards compat hacks removed, 'none' and '-u' don't exist anymore. 'opam unpin` for 'opam pin remove' still allowed because it's convenient and quite innocuous
- 'opam pin PKG TARGET': shortcut to 'opam pin add' removed
- 'opam pin --edit PKG': now use 'opam pin edit'
- 'opam config -env': no longer accepted for 'opam config env'
- some meaningless arguments that could be ignored before are now errors
Merge pull request #1472 from OCamlPro/cl-sanitise

Cleanup, document and improve sub-command handling