Wait for several keys, and continue when the first of them is complete.
Inspired by Ben Darnell in a conversation on the Tornado mailing list.
Wait for a YieldPoint or a timeout, whichever comes first.
Cancel a key so gen.engine doesn’t raise a LeakedCallbackError
Cancel all keys for which the current coroutine has registered callbacks