First pass at AutoContext

Intended to automatically insert asyncs in batches (asynchronously) as
they are added to the context.

Working DO NOT MERGE

(queue.add() is not async yet, but will be soon)