Add async support

These bulk of these changes are to add async support to the batch extensions in the form of DeleteAsync and UpdateAsync methods.

It also adds async support to the caching extensions with the methods FromCacheAsync and FromCacheFirstOrDefaultAsync.