Add TaskQueue

This attempts to solve #59, #97, and #103.  It could also be used to implement `forEachAsync`, `reduceAsync`, and `doWhileAsync`, and could potentially replace `FutureGroup`.