[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.
[runtime]Cleanup mach support code and add local TLS offset detection code to it.
massive rewrite here