RFC: Add a thread local storage module, std::tls

Introduce a new thread local storage module to the standard library, `std::tls`,
providing:

* Scoped TLS, a non-owning variant of TLS for any value.
* Owning TLS, an owning, dynamically initialized, dynamically destructed
  variant, similar to `std::local_data` today.

[Rendered](https://github.com/alexcrichton/rfcs/blob/tls-overhaul/text/0000-tls-overhaul.md)
For the pure `#[thread_local]` / C++11 destructor support case, it just needs to have a thread-local boolean tracking the initialization state. It can set it back to uninitialized before calling the destructor, and then further accesses will just reinitialize it. I think it's perfectly sane for it to infinite loop if that's the programmer has essentially asked it to do that by having dependency cycles between the destructors.

On platforms still lacking this support, it's still possible to make it memory safe but it does mean that accessing uninitialized TLS in destructors should be considered as a bug even if it's intended / would be sane with C++11 semantics because it may trigger memory leaks (`PTHREAD_DESTRUCTOR_ITERATIONS`, etc.).