Accept duplicates when they're all the same.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Merge pull request #2077 from ezyang/ezyang-accept-duplicates

Accept duplicates when they're all the same.
Test executable tests without hpc
Add printRawCommandAndArgsAndEnv
Enable hpc with LocalBuildInfo flag
Enable program coverage for all components
Clean up after HPC tests properly
Useful error message for --enable-library-coverage
Overhaul HPC support

This fixes issue #1945 and replaces pull request #1947.

These bugs in #1947 are fixed:
* The pull request no longer applied cleanly to master because of the
  Binary LocalBuildInfo patches.
* The new test cases did not put the generated HPC interface files under
  "dist/", so the files weren't cleanup up correctly.
* HPC interface files for each component need to be separated, but the
  were being combined into the same directory.

These enhancements are also implemented:
* Program coverage is now used for all components when enabled and the
  flag --enable-library-coverage has been changed to --enable-coverage.
* A helpful error message is printed if the obsolete flag
  --enable-library-coverage is used.
Update changelog about --enable-coverage
Update bootstrap.sh
Merge pull request #2107 from tuncer/update-bootstrap

Update bootstrap.sh
Allow random-1.1
Merge pull request #2109 from ddssff/master

Allow random-1.1
Update bootstrap.sh
GhcOptions.mappend: use `Data.List.union` where appropriate.

Some Cabal API clients apparently use `foldl mappend` on large lists of
GhcOptions records. Fixes #2110.