More diff friendly pretty printing of cabal files

Now the 'fieldGet' function of 'FieldDescr' does the
whole pretty printing of the field. Previously only the
values have been pretty printed by 'fieldGet' and the
name of the field with the colon have been printed
in the 'PrettyPrint' module.

But this separation made it more difficult to handle the
pretty printing of fields differently, because some fields
should be just printed in one lines and others - having several
values - should be printed nested with each value on a new line.

This difference in the printing of the fields is now handled by
the 'FieldDescr' constructor functions in 'ParseUtils'.

Now the 'listField' and 'commaListField' functions create 'FieldDescr'
that nest their values and all other functions create one line
for the whole field.
'install --enable-tests' shouldn't actually run tests.

Add a new flag '--run-tests' for running tests. Fixes #1647.
Make '--run-tests' imply '--enable-tests'.
Float out 'haddockOptions' from 'haddockCommand'.
Add a 'haddock' section to '~/.cabal/config'.

Fixes #931, #1585.

The new config file section looks like this by default:

    haddock
      -- keep-temp-files: False
      -- hoogle: False
      -- html: False
      -- html-location:
      -- executables: False
      -- tests: False
      -- benchmarks: False
      -- all:
      -- internal: False
      -- css:
      -- hyperlink-source: False
      -- hscolour-css:
      -- contents-location:
Make 'allFlags' return 'NoFlag' by default.

Otherwise this field is by default printed as 'all: False' instead of '-- all:'
in the config file. Ideally, we'd like to print the commented default value.
Make 'trueArg'/'falseArg' create a 'BoolOpt' instead of 'ChoiceOpt'.

'ChoiceOpt' is really an enum, when we were using it is a boolean the default
value wasn't printed correctly in the config file.

Before:

-- hscolour:

After:

-- hscolour: False
Support 'haddock' in 'cabal.config'.
Formatting.
Remove module 'PrettyPrintIndent' and move function 'indentWith' into module 'ParseUtils'
Fix #893 (Broken links in user guide)
Link to haskell.org/cabal/release/... docs instead of Hackage's.
Update remaining unused links as well for consistency.
Don't freeze non-required installed packages

An InstallPlan contains installed packages in the package database which are
not required to satisfy the dependencies of the user targets. To prevent
including them in the frozen set of constraints, `Freeze.planPackages` uses
`D.C.PackageIndex.dependencyClosure` to try and take the transitive closure of
the package dependencies.

Whilst it is possible for `pruneInstallPlan` to fail, only valid
`InstallPlan`s are passed to it. If a failure does occur, we error.
Merge pull request #1752 from ianbollinger/fix-#893

Fix #893 (Broken links in user guide)
Merge remote-tracking branch 'cabal/master'

Conflicts:
	Cabal/Distribution/ParseUtils.hs
Merge pull request #1707 from 23Skidoo/haddock-saved-config

Add a 'haddock' section to '~/.cabal/config'.
Merge pull request #1728 from 23Skidoo/install-enable-test

'install --enable-tests' shouldn't actually run tests.
Merge branch 'master' of https://github.com/dan-t/cabal
-Wall police