initial async utilities

This adds doWhileAsync(), reduceAsync(), and FutureGroup