Specialize the address type.

This is now string * string option, where the first component is always the full path and the second component the optional tags (for VCS backends)
Add the url as a parameter to Not_available
Add OpamFilename.extract_generic_file
Rename OpamFilename.sub_dirs -> OpamFilename.dirs
Remove dead-code
Refactor OpamFilename.prettify
OpamPath.dev_packages -> OpamPath.dev_package
Add OpamFilename.copy_files
Refactor OpamPath.Switch, clean-up documentation
Refactor OpamRepository
Merge the 'dev packages' and 'pinned packages' codepaths

Now, it is (almost) exactly the same to have a pinned package and a dev package. The differences:
- pinned packages have an entry in ~/.opam/<switch>/pinned
- pinned packages have an overlay URL and OPAM files in ~/.opam/<switch>/overlay/<name>.pinned/{url,opam}
- all packages might have an overlay URL in  ~/.opam/<switch>/overlay/<name>.<version>/{url,opam}
- all dev packages use ~/.opam/packages.dev/<name>.<version>/ to store their cached contents
- all packages with an overlay URL file (which include pinned packages) use ~/.opam/<switch>packages.dev/<name>.<version>/ to store the cached contents
Fix compilation of scripts
Support for local archives/dirs in URL files

Continue cd3c7540f5e0fc5bf518a0ba974806de076c95db
Do not try to check checksums of directories
Updated documentation for the 'available:' opam field
Showing warning instead of failing when cached opam file doesn't parse
Implemented the opam 'available' field, superseding 'os' and 'ocaml-version' fields
(does not compile, needs some declarations moved within OpamState, postponed to the
next patch for making merge easier)
Closes #664
Fixed OpamState declaration order