Implement "reexported-modules" field, towards fixing GHC bug #8407. (ROUND 2)

Original PR: https://github.com/haskell/cabal/pull/1984

Re-exported modules allow packages to reexport modules from their
dependencies without having to create stub files.  Reexports of the same
original module don't count as ambiguous imports when module finding
occurs.  The syntax is:

    "orig-pkg" OrigName as NewName

You can omit 'as NewName', in which case it is reexported as the same
name.  Self referential aliases work too; however, they're only visible
to packages which depend on this package.

Left to future work: just provide a module name 'OrigName', where ghc-pkg
figures out what the source package is.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Why is this a hack? Do we expect to keep it this way? Perhaps instead document what this does because it's not obvious to me why it's a hack to begin with.