Async Cursor improvements

Async Cursors can now be cancelled via their future
Async Cursor forEach can now take a CancellationToken which controls iteration.

Replaces #207