Split the cabal_macros.h generation into a helper and wrapper

Makes it easier to reuse this code in other contexts, for example if we
want to build without a .cabal file using all the packages in the
environment.
Add a list command to the HcPkg module

Only useful for getting the source package ids. Does not get the
installed package ids or any other details. Most use cases should
still use dump.
Revert "Try harder to pick the correct version in cabalLibVersionToUse."

This reverts commit a17491d70741d28d9b6037640e6fb2b041fc81bc.

That commit made the logic much more convoluted and broke the following use case
(for sandboxed packages with build-type Custom):

$ cabal configure -w /path/to/ghc
$ cabal build
Merge pull request #1399 from dcoutts/cabal_macros.h-util

Split the cabal_macros.h generation into a helper and wrapper
Merge pull request #1400 from dcoutts/hc-pkg-list

Add a list command to the HcPkg module
Make absolute haddock paths proper URLs

Fixes #1064, #1406
Merge pull request #1407 from feuerbach/haddock-urls

Make absolute haddock paths proper URLs
Merge pull request #1404 from dcoutts/repl

Initial implementation of repl command
Add some more recent GhcOptions

Add support for:
 -no-hs-main
 -dynamic-too  (now a three-way choice with -static & -dynamic)
 -dynhisuf -dynosuf
 -dyno
All the options we use internally should have their own flags. We should
really only be using ghcOptExtra for things from the user.
For cabal repl, filter out flags that cause warnings

Like -O -threaded -prof -debug etc.
Fix the cabal repl --ghc-option(s) flags