Force the runtime on OSX to use a 8Mb stack.

This change doesn't affect any of the cats that default to 8Mb.

We need a significantly big main stack because mcs is implemented
in a recursive fashion and, right now, parts of the corlib test suite
require in excess of 1Mb of stack space to compile.
Introduce mono_runtime_init_tls to centralize all of the late runtime TLS initialization.

TLS initialization must be done as early as possible since runtime initialization
might be intermingled with 3rd party code running that sometimes create additional
slots. Those extra TLS slots do interfere with AOT compilation that might see a
different set of offsets when compiling than when running.

The current piece of problem is AOT image loading. If the AOT image is not found,
the dynamic linker in 10.9 will create a TLS slot to hold error data. AOT image
loading is triggered in between the creation of the runtime TLS slots.

Since AOT image loading never happens during compilation, the dynamic linker
would never create the slot and things would otherwise remain working.

The solution is to move all TLS initialization to before any assembly is loaded
and, transitively, AOT image loading.