Allow AutoContexts to be created from context.new()

This adds a batch_size kwarg to context.new which results in an
AutoContext being registered instead of a regular Context. Aside from
being more convenient, this allows the AutoContext behavior to be
abstracted from the client. This helps in the event that we decide to
bring AutoContext's batching functionality into Context, removing the
need for the subclass.

@robertkluin-wf @ericolson-wf @beaulyddon-wf @tannermiller-wf
I would make `AutoContext` the proper noun, simply so it's absolutely clear that we are referring to that object and not the regular `Context` object.