Make derived names deterministic

Authored by niteria.

Description

Make derived names deterministic

The names of auxiliary bindings end up in the interface file, and since uniques
are nondeterministic, we end up with nondeterministic interface files.

This uses the package and module name in the generated name, so I believe it
should avoid problems from Trac #7947 and be deterministic as well.

The generated names look like this now:

`$cLrlbmVwI3gpI8G2E6Hg3mO`

and with -ppr-debug:

`$c$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal$String`.

Reviewed By: simonmar, austin, ezyang

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

GHC Trac Issues: Trac #4012