core::rt: Declare large parts of the I/O API
core: Add rt::context for figuring out what runtime services are available

Conflicts:
	src/libcore/rt/sched/mod.rs
core: Don't use managed boxes in TaskBuilder
core: Wire up `spawn` to the new scheduler

It will check which scheduler it is running under and create the
correct type of task as appropriate. Most options aren't supported
but basic spawning works.
core: More tweaks to the thread-local scheduler interface
core::rt: Add another context switching operation to the scheduler

`switch_running_tasks_and_then` does a context switch to another
task then immediatly runs a closure.
core::rt: Simplify some scheduler operations
Tidy
Try to suppress valgrind errors

I can't reproduce the one on the bots, but this might fix it
auto merge of #5961 : brson/rust/valgrind, r=brson

I can't reproduce the one on the bots, but this might fix it
core::rt: Rename Closeable to Close, Seekable to Seek, blocking to native
auto merge of #5960 : brson/rust/io, r=pcwalton

r?

This pull request is a grab bag of work on the new scheduler.

The most important commit here is where I [outline](https://github.com/brson/rust/blob/io/src/libcore/rt/io/mod.rs) a fairly complete I/O API, based on `Reader` and `Writer` types, as in the current `core::io` module. I've organized this version into a number of modules with declarations for Files, TCP, UDP, Unix sockets, blocking/non-blocking implementations, memory buffers, compression adapters. I'm trying to get this into shape to present on the mailing list.

This branch also wires up `spawn` to the new scheduler, and simplifies the core scheduler operations.
fix some random ice