Support AsyncGenerator

Summary: When you yield and await in the same function, you are of type
`AsyncGenerator<Tk, Tv, Ts>` where the generics have the same meaning as
in `Generator<Tk, Tv, Ts>` (yielded key, yielded value, sent value).

Reviewed By: @elgenie

Differential Revision: D1457241