Zonk the existential type variables in tcPatSynDecl

This was just an omission, which showed up as Trac #8966

(cherry picked from commit 4dc9f9869bfc82fdb8bd61864859007873ebcc27)
Simplify and tidy up the handling of tuple names

This fixes Trac #8954.

There were actually three places where tuple occ-names
were parsed:
  - IfaceEnv.lookupOrigNameCache
  - Convert.isBuiltInOcc
  - OccName.isTupleOcc_maybe

I combined all three into TysWiredIn.isBuiltInOcc_maybe
Much nicer.

(cherry picked from commit 750271e61bdbaad50c19176406512e79abe404a8)

Conflicts:
	testsuite/tests/th/all.T
Honour the untouchability of kind variables

Trac #8985 showed up a major shortcoming in the kind unifier: it was
ignoring untoucability.  This has unpredictably-bad consequences;
notably, the skolem-escape check can fail.

There were two things wrong
 * TcRnMonad.isTouchableTcM was returning a constant value for kind variables
   (wrong), and even worse the constant was back-to-front (it was always False).

 * We weren't even calling isTouchableTcM in TcType.unifyKindX.

I'm not sure how this ever worked.

Merge to 7.8.3 in due course.

(cherry picked from commit e7f0ae7ff4f2199abe42f20bac825a7802bff466)
Test Trac #8985

(cherry picked from commit ff9f9a7f2e227fcda7b8a2f52ec8be66de2e76cd)