[runtime]Introduce a clean abstraction to fast tls that is more amendable for dynamic probing.

Introduce a new API for fast tls that makes it easier to implement some things that used to be hard.

The highlights are that it allows us to get the address of TLS variables and that all variables
are organized as a single contiguous block. It's not possible for all targets to read TLS variables
from other threads.

The downside of this API is that all TLS slots that we need to be fast must be enumerated upfront
in mono-tls.h because we need to know how big our TLS block needs to be.

The major driver behind this change is Darwin, it now requires runtime probing for TLS schema and
read the TLS of other threads. The change come from the fact that the probed offsets have
been changing much more than we can find tolerable.

There's one caveat, all fast models are disabled for now since we need to change metadata+JIT
to use this new API.
[runtime]Rework all the runtime and port x86, amd64 and arm to the new TLS model.

A windows backend is missing at this point.
Fix tls check.
Fix a warning
Fix x86/generic.
Fix amd64 tls support.
Start working on implementing indirect TLS.
FIXME FIXME FIXME