Suppress AMP warnings with -XNoImplicitPrelude (fixed Trac #8320)

The AMP warnings caused 'base' to be loaded even when we were
compiling 'ghc-prim'.  That is bad, bad, bad.  We got a very
obscure message
   attempting to use module ‛ghc-prim:GHC.Types’
     (libraries/ghc-prim/./GHC/Types.hs) which is not loaded

See Note [Home module load error] in LoadIface
oprhNamesOfFamInst should include the type family itself (fix Trac #8469)

Trivial fix; matches oprhNamesOfClsInst.
Add doc link
Refactor the topNormaliseNewType story, fixing Trac #8467

A bit of a mess had accumulated, with unclear invariants.

* Remove splitNewTypeRepCo_maybe, in favour of topNormaliseNewType_maybe
  (which had the same signature but behaved subtly differently).

* Make topNormaliseNewType_maybe guaranteed to return a non-newtype
  if it says (Just ty).  This is what was causing the loop in #8467

* Apply similar tidying up to FamInstEnv.topNormaliseType
Untabify and remove trailing spaces
Untabify and trailing whitespace
Trailing whitespace only
Untabify (sorry didn't fully do it first time)
Remove unnecessary check in CmmContFlowOpt

Fixes #8456
Another attempt to fix the conditions for slop-zeroing

Also refactor the #defines to hopefully make it clearer what's going
on.
Implement shortcuts for slow calls that would require PAPs (#6084)
Discard dead assignments in tryToInline

Inlining global registers and constants made code slightly larger in
some cases.  I finally got around to looking into why, and discovered
one reason: we weren't discarding dead code in some cases.  This patch
fixes it.
Make integer overflow less likely to happen (#7762)

The particular problematic code in #7762 was this:

            nat newSize = size - n;
            char *freeAddr = MBLOCK_ROUND_DOWN(bd->start);
            freeAddr += newSize * MBLOCK_SIZE;
                        ^^^^^^^^^^^^^^^^^^^^^^  OVERFLOW!!!

For good measure, I'm going to fix the bug twice.  This patch fixes
the class of bugs of this kind, by making sure that any expressions
involving BLOCK_SIZE or MBLOCK_SIZE are promoted to unsigned long.  In
a separate patch, I'll fix a bunch of individual instances (including
the one above).
Turn several nats into StgWord to avoid potential integer overflow (#7762)
comments