JAVA-1332 with minimal Async changes.

I removed the larger async changes from #19 as it seemed to get in the way of the review and the updating of async/rx is best done once the apis are solidified.
We should make sure that the executor properly defines equality.  I think a MongoClient should never be equal to another MongoClient, so as long as the executor defines equality properly we should be ok here.