Comments only
Rejig builders for pattern synonyms, especially unlifted ones

When a pattern synonym is for an unlifted pattern, its "builder" would
naturally be a top-level unlifted binding, which isn't allowed.  So we
give it an extra Void# argument.

Our Plan A involved then making *two* Ids for these builders, with
some consequential fuss in the desugarer.  This was more pain than I
liked, so I've re-jigged it.

 * There is just one builder for a pattern synonym.

 * It may have an extra Void# arg, but this decision is signalled
   by the Bool in the psBuilder field.

   I did the same for the psMatcher field.

   Both Bools are serialised into interface files, so there is
   absolutely no doubt whether that extra Void# argument is required.

 * I renamed "wrapper" to "builder".  We have too may "wrappers"

 * In order to deal with typecchecking occurrences of P in expressions,
   I refactored the tcInferId code in TcExpr.

All of this allowed me to revert 5fe872
   "Apply compulsory unfoldings during desugaring, except for `seq` which is special."
which turned out to be a rather messy hack in DsBinds
Move all the zonk/tidy stuff together into TcMType (refactoring only)
Implement full co/contra-variant subsumption checking (fixes Trac #9569)

This is a pretty big patch, but which substantially iproves the subsumption
check.  Trac #9569 was the presenting example, showing how type inference could
depend rather delicately on eta expansion.  But there are other less exotic
examples; see Note [Co/contra-variance of subsumption checking] in TcUnify.

The driving change is to TcUnify.tcSubType.  But also

* HsWrapper gets a new constructor WpFun, which behaves very like CoFun:
       if     wrap1 :: exp_arg <= act_arg
              wrap2 :: act_res <= exp_res
       then   WpFun wrap1 wrap2 : (act_arg -> arg_res) <= (exp_arg -> exp_res)

* I generalised TcExp.tcApp to call tcSubType on the result,
  rather than tcUnifyType.  I think this just makes it consistent
  with everything else, notably tcWrapResult.

As usual I ended up doing some follow-on refactoring

* AmbigOrigin is gone (in favour of TypeEqOrigin)
* Combined BindPatSigCtxt and PatSigCxt into one
* Improved a bit of error message generation
Put the decision of when a unification variable can unify with a polytype

This was being doing independently in two places. Now it's done in one
place, TcType.canUnifyWithPolyType
Make the on-the-fly unifier defer forall/forall unification

This has to be done by the full constraint solver anyway, and it's
rare, so there's really no point in doing it twice.  This change
just deletes some (tricky) code.
Fix a latent promotion bug in TcSimplify.simplifyInfer

We weren't promoting enough type variables, with unpredictable consequences.
The new code is, if anything, simpler.
Remove TcMType from compiler_stage2_dll0_MODULES

I can't say I really understand this DLL-split thing, but the build fails
if I don't remove TcMType here.

I've put this in a commit on its own, but it's a knock-on effect of the
immediately preceding wave of typechecker changes
Test Trac #9318
Trac #9222 is actually an ambiguous type, now detected
Delete duplicated tests
Test Trac #9569
Fix up tests for Trac #7220; the old test really was ambiguous
Test T2239 actually succeeds without impredicativity, because of the new co/contra subsumption check
Wibbles (usually improvements) to error messages
Fix Trac #9815

Dot-dot record-wildcard notation is simply illegal for constructors
without any named fields, but that was neither documented nor checked.
This patch does so

- Make the check in RnPat
- Add test T9815
- Fix CmmLayoutStack which was using the illegal form (!)
- Document in user manual
Test Trac #8149