Fix #9415.

Abort typechecking when we detect a superclass cycle error, as
ambiguity checking in the presence of superclass cycle errors can
cause a loop.

(cherry picked from commit 1b1388697e687154c2bf1943639e75f3ccf5bc59)
Test #9415 (typecheck/should_fail/T9415)

(cherry picked from commit 1a3e19d061c1e5a1db9789572eca3a0ade450954)
Fix Trac #9371.

This was very simple: lists of different lengths are
*maybe* apart, not *surely* apart.

(cherry picked from commit f29bdfbcedda6cb33ab05d884c151f2b31f4e4e0)
Test #9371 (indexed-types/should_fail/T9371)

(cherry picked from commit a09508b792eed24fc4d8a363df2635026bfa2de6)
When desugaring Use the smart mkCoreConApps and friends

This is actually the bug that triggered Trac #9390.  We had
an unboxed tuple (# writeArray# ..., () #), and that writeArray#
argument isn't ok-for-speculation, so disobeys the invariant.

The desugaring of unboxed tuples was to blame; the fix is easy.

(cherry picked from commit 1fc60ea1f1fd89b90c2992d060aecb5b5a65f8c0)
Test Trac #9390

(cherry picked from commit 2990e97f008c9703eb4b47e24a29d052d5735f00)