Optimise stack checks that are always false

Fix a bug introduced in 94125c97e49987e91fa54da6c86bc6d17417f5cf.
See Note [Always false stack check]
Comments only
Comments only
When de-serialising interfaces, need to distinguish types from kinds

This patches fixes two separate instances of the bug,

 * one in tc_ax_branches (Trac #8449)

 * one in type/kind applications in IfaceExpr
   (hence the new tcIfaceApps)

The latter was reported by Iavor, no ticket
Trailing whitespace only
Comments (about the stack overflow check) only
Comments about control-flow optimisation
Clarify comments and liberalise stack-check optimisation slightly

The only substantive change here is to change "==" into ">=" in
the Note [Always false stack check] code.  This is semantically
correct, but won't have any practical impact.
Trailing whitespaces
Improve control flow optimisation algorithm

Fixes #8456. Previous version of control flow optimisations
did not update the list of block predecessors, leading to
unnecessary duplication of blocks in some cases. See Trac
and comments in the code for more details.
Comments only
Merge remote-tracking branch 'ghchq/master' into halvm