Add a util::Task class to manage async operations.

Due to updating ```status_``` while holding ```lock_```, I'm 100% confident that on x86, this is safe, if you use it correctly. If you call this method without synchronizing with your call to ```Return()```, all bets are off, but even taking ```lock_``` here wouldn't save you from that, you'd just get more consistent garbage, but garbage nonetheless. :smiley:

Now, I do wonder about architectures with looser memory models than x86, I'm investigating this at the moment. I might add a lock in the meantime, but as mentioned in my other comment, this method is expected to be called repetitively, so it'd be best to keep it cheap to call...