[runtime]Cleanup mach support code and add local TLS offset detection code to it.
[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.
[sgen]Switch sgen to the new fast TLS code for the two variables used by allocators.
[boehm] Switch boehm to the new fast tls code for the allocators.
[runtime]Switch threads to the new fast tls code.
[runtime] Move remaining variables used by the JIT to the new fast tls schema.

Move domain, jit_tls, lmf and lmf_address variables to the new schema.

Rework x86, amd64 and arm backends.