Add a warning for sections that are not on the top level.

Fixes #712
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.
Add Distribution.Compat.CreatePipe
Refactor test runners

The test runners for exitcode-stdio and detailed tests will be separated
into their own modules. They cannot share a test runner because
'--show-details=streaming' does not make sense for detailed tests the
way they are implemented now. The detailed test runner needs to be
substantially rewritten anyway, so splitting up the test runners will
eventually accomodate that goal.
Implement '--show-details=streaming' for ExeV10 tests

LibV09 tests are still non-streaming because those tests do not use
stdout anyway.
Makefile: build setup with -threaded
Disable stdout buffering in test suites

This is a workaround to enable streaming test logs in Cabal's test
suites.
Link custom Setup with threaded runtime
Merge pull request #1727 from ttuegel/test-streaming

Implement '--show-details=streaming' to show test logs in real-time
Output the prologue file in UTF-8 when Haddock >= 2.15.

Fixes #1721.
Merge pull request #1731 from 23Skidoo/issue-1721

Output the prologue file in UTF-8 when Haddock >= 2.15.
'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.
Merge pull request #1699 from fhartwig/master

Add a warning for sections that are not on the top level.