Simple IAsyncResult implementation that can be used to cache all the parameters to the BeginFoo call and then passed to the FooThunk property that's invoked by EndFoo (thereby providing the test's implementation of FooThunk with as much of the state as it wants).