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?

Yeah, this is fine then. I think in the future we want to allow static `Mutex`, but we don't have that capability yet.