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)
Static TLS access is a CPU offset instruction so IMO the only way you're going to get a sane benchmark is generating the assembly for a fetch, increment and set of an integer in TLS (inside a library `pub fn` where it can't optimize out) and then copy-pasting it 100000 times. Using a loop will be measuring the cost of looping more than the cost of the pointer offset vs. pointer offset + branch inside the loop.