syntax: add a local_data_key macro that creates a key for access to the TLS.

This allows the internal implementation details of the TLS keys to be
changed without requiring the update of all the users. (Or, applying
changes that have to be applied for the keys to work correctly, e.g.
forcing LLVM to not merge these constants.)
auto merge of #8534 : huonw/rust/tls-key-macro, r=alexcrichton

This allows the internal implementation details of the TLS keys to be
changed without requiring the update of all the users. (Or, applying
changes that *have* to be applied for the keys to work correctly, e.g.
forcing LLVM to not merge these constants.)
std: bootstrapping libuv-based fileio in newrt... open & close

the test "touch"es a new file
std: working tests for low-level libuv open, write and close operations
std: add read and unlink to low-level FileDescriptor + end-to-end CRUD test
std: support async/threadpool & sync paths in uv_fs_* calls + add sync test