Add task profiler, which works by instrumenting each task runtime when enabled.

@pcwalton - I'm not sure if there's any gotchas or downsides to profiling using this technique to instrument the runtime. Happy to close this if it doesn't seem like a good idea to you. r?

I think this may not require `static mut`, at least in the newest Rust. http://doc.rust-lang.org/sync/mutex/struct.StaticMutex.html