core::rt: Rename WorkQueue methods, remove extra push method
core::rt: Put a lock on the work queue
core::rt: Add MessageQueue type

This is the queue used to send messages to Schedulers
core::rt: Queues MessageQueue and WorkQueue are cloneable
core:rt:: Rename LocalServices to Task
core::rt: Add Local trait
core::rt: Store Task as a ~ pointer
rt: Rename rust_initialize_global_state to rust_initialize_rt_tls_key
core::rt: Move some TLS functions from local_sched to local_ptr
core::rt: Move more TLS functionality into local_ptr
core::rt: Make local_sched a wrapper around Local
core::rt: Convert users of local_sched to Local trait
core::rt: Remove local_sched module
core::rt: Implement Local for Task
core::rt: Convert unsafe_borrow_io to a Local impl
auto merge of #6626 : brson/rust/io-upstream, r=graydon

r?

Mostly refactoring, and adding some of the remaining types described in #4419.

The [`Local`](https://github.com/brson/rust/blob/3b4ff41511cfaa5e311b03d16b47bf40c117fa2f/src/libcore/rt/local.rs#L17) trait collects some common, often unsafe patterns around task-local and thread-local values. Making all these types safe is largely the aim of #6210.