AsyncPatch

This pull request adds the AsyncPatch class which allows us to mock a list of objects using Python with statements in order to keep the mocked object within the context of the current unit test.

Thanks to @droogans for assistance with the design and implementation.