Always qualify on hi interface mismatch.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Module reexports, fixing #8407.

The general approach is to add a new field to the package database,
reexported-modules, which considered by the module finder as possible
module declarations.  Unlike declaring stub module files, multiple
reexports of the same physical package at the same name do not
result in an ambiguous import.

NB: When a reexport renames a module, that renaming is *not* accessible
from inside the package.  This is not so much a deliberate design choice
as for implementation expediency (reexport resolution happens only when
a package is in the package database.)

TODO: Error handling when there are duplicate reexports/etc is not very
well tested.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>

Conflicts:
	compiler/main/HscTypes.lhs
	testsuite/.gitignore
	utils/haddock
(WIP) Package keys, plus a raft of error reporting refactoring

Summary:
This patch set makes us no longer assume that a package key is a human
readable string, leaving Cabal free to "do whatever it wants" to allocate
keys; we'll look up the PackageId in the database to display to the user.
This also means we have a new level of qualifier decisions to make at the
package level, and rewriting some Safe Haskell error reporting code to DTRT.

Additionally, we adjust the build system to use a new ghc-cabal output
Make variable PACKAGE_KEY to determine library names and other things,
rather than concatenating PACKAGE/VERSION as before.

Adds a new `-package-key` flag to subsume the old, erroneously named
`-package-name` flag.

RFC: Perhaps the flag should be called -current-package-key (so that we
can use -package-key to load packages by key?

RFC: The md5 hashes are pretty tough on the eye, as far as the file
system is concerned :(

ToDo: Figure out what to do with the funny case of mutual recursion in Packages

ToDo: Fix warnings and validate

ToDo: Fix code duplication for pkg_qual logic.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>

Test Plan: validate

Reviewers: simonpj, simonmar, hvr, austin

Subscribers: simonmar, relrod, carter

Differential Revision: https://phabricator.haskell.org/D80

Conflicts:
	compiler/main/Packages.lhs
 FIXUPThis needs to go back in module reexports

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>