Limit upper versions of Alex and Happy

This is temporary until new bool primops have been pushed.
Implement checkable "minimal complete definitions" (#7633)

This commit adds a `{-# MINIMAL #-}` pragma, which defines the possible
minimal complete definitions for a class. The body of the pragma is a
boolean formula of names.

The old warning for missing methods is replaced with this new one.

Note: The interface file format is changed to store the minimal complete
definition.

Authored-by: Twan van Laarhoven <twanvl@gmail.com>
Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Update to new missing-method-decl warning style

As a side-effect, the new `{-# MINIMAL #-}` facility (see #7633) changes
the existing separate warnings for each missing method declaration:

{{{
No explicit method or default declaration for ‛+’
In the instance declaration for ‛Num T’
}}}

to a single warning per class of the following form:

{{{
No explicit implementation for
  ‛+’, ‛*’, ‛abs’, ‛signum’, and ‛fromInteger’
In the instance declaration for ‛Num T’
}}}

This commit adapts the reference output files in the testsuite to follow
this change in GHC's warnings messages.

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Tests for MINIMAL pragma (#7633)
Tweaks to release notes
If someone also feels that credits should better go into the
release announcement, just nuke the last line of that paragraph.
Follow changes in [12a8244/ghc-prim] (#7633)
Add flag to control loopification

It is off by default, which is meant to be a workaround for #8275.
Once #8275 is fixed we will enable this option by default.
Follow changes in [7ab62490/base] (re #7633)
A little refactoring

* Make isCFunEqCan_maybe return Maybe (TyCon, [Type])
* Add insertTM, deleteTM to TrieMap
Accommodate Derived constraints in two places (fix Trac #8129, #8134)

If we have
   class (F a ~ b) => C a b
then we can produce *derived* CFunEqCans.  These were not being
treated properly in two places:

a) in TcMType.zonkFlats (Trac #8134)
b) in TcSMonad.prepareInertsForImplications (Trac #8129)

This patch fixes both.
Optimise (case tagToEnum# x of ..) as in Trac #8317

See Note [Optimising tagToEnum#] in Simplify
Tidy up and refactor overflow checking for literals

It's much easier (and more efficient) to pattern match on
the HsOverLit than on the desugared version!
Trailing whitespaces
Trailing whitespaces
Follow changes in comparison primops (see #6135)
Restore old names of comparison primops

In 6579a6c we removed existing comparison primops and introduced new ones
returning Int# instead of Bool. This commit (and associated commits in
array, base, dph, ghc-prim, integer-gmp, integer-simple, primitive, testsuite and
template-haskell) restores old names of primops. This allows us to keep
our API cleaner at the price of not having backwards compatibility.

This patch also temporalily disables fix for #8317 (optimization of
tagToEnum# at Core level). We need to fix #8326 first, otherwise
our primops code will be very slow.
Comments only
Make Word# a wired-in TyCon (fix Trac #8280)

wordTyCon was treated as wired-in, but
  * It didn't have a WiredInName
  * It didn't appear in the list of wiredInTyCons

I'm not sure how anything worked!
Fix egregious blunder in extractRelevantInerts
Fix T4007

Accidentally broken by my last commit