start work on a new implementation of TLS

This begins the work towards a new TLS implementation. It will be useful
to have the initial work in-tree for test coverage across various
platforms and to allow for collaborative work on the API. The current
fast implementation using `#[thread_local]` is expected to work on
Linux, Windows (with #17563), OS X, FreeBSD and the current Android
version (but not the bot).

Coming up with a good API will need to wait until there's a full
implementation with destructor support (#17572) and a fallback path
(#17579) for platforms like iOS and old versions of Android. A set of 6
macros is probably not the ideal API... but it's an obvious way of
covering all of the use cases with minimal overhead.

Closes #17569
Rust isn't capable of doing it that way. It has no way to create a static from a generic type parameter.