Delegate more of AsyncIterator to BatchIterator.

This eliminates a lot of duplicated code. Also rewrote the AsyncIterator test and expanded the BatchIterator test.