Reduce non-determinism in ABI hashes with RULES and instance decls

Authored by niteria.

Description

Reduce non-determinism in ABI hashes with RULES and instance decls

Summary:
Before this change the RULES would be attached to one for the names from
the module that appear on the left hand side. The choice depended on the
uniq that was generated, which are known to be non-deterministic (a
separate, bigger problem). Now we use OccNames which should be stable.

Analogously for instance declarations, but they are attached to one of
the types involved.

Test Plan:
contbuild
it made Data.Text.Internal.Fusion.Common interface stable, previously
stream fusion rule would be attached either to streamList or
unstreamList depending on if the module was compiled after `cabal
clean` or after find | grep '\.o$' | xargs rm.

Reviewers: simonpj, austin, bgamari, simonmar

Subscribers: puffnfresh, thomie

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

GHC Trac Issues: Trac #4012