rts/sm/Storage: Introduce allocateFail()

This is like allocate() but returns NULL instead of bringing down the
RTS in the event of a heap overflow. This will soon be used for handling
stack overflows in the case of an infinite stack size.
rts/Threads: Use allocateFail() to allocate stack

We currently throw a StackOverflow exception to the erring thread
when allocateFail() fails. As SPJ has said in Ticket #8189, however, we
should give the user further information (e.g. the stack size at time of
failure).
rts: Print correct stack size on stack overflow
rts: Allow for infinite stack size

This is encoded as RtsFlags.GcFlags.maxStkSize == 0.
rts: Disable maximum stack size by default

This closes Ticket #8189.
rts/Constants.h: Remove outdated comment

I believe HeapOverflow now unambiguously indicates that the heap has
overflowed as stack allocation failure is now handled separatly.