Make the default doc index file path compiler/arch/os-dependent.

Fixes #2135.
cabal-install : Add a 'user-config' command.

The 'user-config' command allows pseudo-diff-ing and updating of the
user's ~/.cabal/config file. The diff is against what cabal would
generated if the user config file did not exist and the update
command overlays the user's existing settings over the current
version of the default settings and writes it back to ~/.cabal/config.

Closes: #2159
Changelog update.
Merge pull request #2159 from erikd/config

cabal-install: Add command 'cabal user-config diff'.
Changelog update.
Add -none syntax for version ranges.

The motivation is to be able to say --constraint 'foo -none' to prevent
'foo' from being considered when installing packages. See #2092.
Document cabal install --constraint.
Merge pull request #2136 from 23Skidoo/issue-2135

Make the default doc index file path compiler/arch/os-dependent.
Add a non-throwing variant of 'requireProgramVersion'.
Formatting, 80-col violations.
'cabal haddock': warn instead of dying when 'hscolour' isn't installed.

This means that if 'hyperlink-source' is set to True, but the 'HsColour'
executable is not present, documentation will be still generated.

Note that 'cabal hscolour' will still exit with error in this case.
Changelog update.
Document flag constraints.
Failing test-case for sandbox add-source regression.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
-Wall police.
Check that sandbox exists before running 'sandbox delete'.
Only call 'listBuildTreeRefs' when actually needed.
It's safe to add ignored add-source deps to the timestamp file.

And should be faster.
Print the "Cache updated" message from a single place.
Force-update the cache in 'add-source'/'remove-source'.

Fixes #2060.