Reorder command imports.
Call 'setup copy' and 'setup register' separately.
Make 'cabal haddock' define __HADDOCK_VERSION__ when preprocessing.

This is useful e.g. for "writing documentation that links to module A without
explicitly qualifying everything, where A is not directly imported." (see the
discussion in #926)

Fixes #1237.
Document __HADDOCK_VERSION__.
Merge pull request #1238 from 23Skidoo/define-haddock

Make 'cabal haddock' define __HADDOCK_VERSION__ when preprocessing.
Whitespace, 80-col violations.
Add TOOL_VERSION_* macros to 'cabal_macros.h'.

Fixes #1547. Sample generated file: https://gist.github.com/23Skidoo/7026016
Docs for TOOL_VERSION_*.
Cosmetic fix.
Merge pull request #1549 from 23Skidoo/tool-version

Add TOOL_VERSION_* macros to 'cabal_macros.h'.
Merge pull request #1462 from Toxaris/topic/copy-and-register

Call 'setup copy' and 'setup register' separately
Make 'cabal init' (somewhat) sandbox-aware.

Fixes #1555.
Document the '.buildinfo'/'install-includes' interaction.

Fixes #1557.
Only report not using latest versions when using < latest

Rather than when /= latest. So we'll no longer report things like:

  hdevtools-0.1.0.6 (latest: 0.1.0.5) (new package)

We don't need to tell people they're not using the latest version when
they're actually using a later version than the one available (e.g.
it's installed locally and not available from the remote server).

Reported by bennofs
'syncProcess': don't restore handlers before the child finished.

Fixes #1560.
Add an explicit way of specifying dependencies on the command line
e.g.,

--dependency="MyOtherLib=MyOtherLib-1.0-073259a42bbf95f818c899c57ba5bf30"

If the package names do not match

--dependency="foo=MyOtherLib-1.0-073259a42bbf95f818c899c57ba5bf30"

then this gives an error

Setup.hs: The following names do match their hash name:
(foo, MyOtherLib)

If the hash is incorrect e.g.

--dependency="foo=MyOtherLib-1.0-073259a42bbf95f818c899c57ba5bf31"

then this gives an error

Setup.hs: The following dependencies do not exist:
MyOtherLib-1.0-073259a42bbf95f818c899c57ba5bf31
Rearange and simplify the --dependency configure code a bit

Use a map from package name rather than from constraint, for the
info on the specific packages to use.
Capture installed package information.

The goal is to learn the installed package id of the package we just
installed, as necessary for #1860. We achieve this by inserting an
additional call to "setup register" that produces the installed package
information in a file. We read and parse that file and could now return
the installed package id, but it is not clear what interface would be
appropriate.
Create hashes from the solver install plan and pass these to cabal so
that the exact packages are installed rather than letting cabal choose
for itself (potentially choosing the package with the incorrect
hash). Closes: https://github.com/haskell/cabal/issues/1460.
Opinionated tweaking of the previous patch