Print stack overflow messages for Linux and OS X

This installs signal handlers to print out stack overflow messages on Linux. It also ensures the main thread has a guard page.

This will catch stack overflows in external code. It's done in preparation of switching to stack probes (#16012).

I've done some simple tests with overflowing the main thread, native threads and green threads (with and without UV) on x86-64.
This might work on ARM, MIPS and x86-32.

I've been unable to run the test suite on this because of #16305.
Hm, or maybe the `stack_bounds` function should be clarified in its documentation instead. It looks like (at least for libgreen), `stack_bounds` returns the *usable* stack of a task, (notably excluding the red zone).

So I think this is ok, but could this be returning the base address of the guard page instead of the top address of the guard page?