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)
It's also possible to use only `#[thread_local]` with no secondary `pthread_key_create` / synchronization by using C++11 destructor support. On Linux, glibc defines a `fn __cxa_thread_atexit_impl(dtor: unsafe extern "C" fn(ptr: *mut c_void), ptr: *mut c_void, dso_symbol: *mut i8)` where `dso_symbol` can just be retrived by defining `static mut __dso_handle: i8`. On OS X, there's a `fn _tlv_atexit(dtor: unsafe extern "C" fn(ptr: *mut c_void), ptr: *mut c_void);` function. Rust could use the weak symbol trick to call these when available and fall back to a crappier implementation on top of dynamic TLS.