libs: merge librustrt into libstd

This commit merges the `rustrt` crate into `std`, undoing part of the
facade. This merger continues the paring down of the runtime system.

Code relying on the public API of `rustrt` will break; some of this API
is now available through `std::rt`, but is likely to change and/or be
removed very soon.

[breaking-change]
Refactor std::os to use sys::os
Allow args to work without rt initialization
Make at_exit initialize lazily and use atexit
Remove rt::bookkeeping

This commit removes the runtime bookkeeping previously used to ensure
that all Rust tasks were joined before the runtime was shut down.

This functionality will be replaced by an RAII style `Thread` API, that
will also offer a detached mode.

Since this changes the semantics of shutdown, it is a:

[breaking-change]
Remove rt::{local, local_data, thread_local_storage}
Remove rt::{mutex, exclusive}
Introduce std::thread

Also removes:

* `std::task`
* `std::rt::task`
* `std::rt::thread`

This commit completely changes the thread model (threads are detached by
default) and API (including park/unpark for blocking). It is a:

[breaking-change]
Add blocking support module for channels
Revise rt::unwind
Fallout from new thread API