Generate (old + 0) instead of Sp in stack checks

When compiling a function we can determine how much stack space it will
use. We therefore need to perform only a single stack check at the beginning
of a function to see if we have enough stack space. Instead of referring
directly to Sp - as we used to do in the past - the code generator uses
(old + 0) in the stack check. Stack layout phase turns (old + 0) into Sp.

The idea here is that, while we need to perform only one stack check for
each function, we could in theory place more stack checks later in the
function. They would be redundant, but not incorrect (in a sense that they
should not change program behaviour). We need to make sure however that a
stack check inserted after incrementing the stack pointer checks for a
respectively smaller stack space. This would not be the case if the code
generator produced direct references to Sp. By referencing (old + 0) we make
sure that we always check for a correct amount of stack: when converting
(old + 0) to Sp the stack layout phase takes into account changes already
made to stack pointer. The idea for this change came from observations made
while debugging #8275.
Trailing whitespaces
Remove unused code

I am removing old loopification code that has been commented out
for long long time. We now have loopification implemented in
the code generator (see Note [Self-recursive tail calls]) so we
won't need to resurect this old code.
Trailing whitespaces
Minor code refactoring in HscMain

Compiled HscMain.o is now smaller.
Document -c in hp2hs(1)

This fixes #8452.
Correct release notes about SIMD support.
Fix typo
Support the syntax [e||...||] for typed expression brackets.
Document new typed Template Haskell features.
Add typed Template Haskell details to the release notes.
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
Test Trac #8449
Comments (about the stack overflow check) only
Comments about control-flow optimisation
Merge branch 'master' of git://git.haskell.org/ghc