Added a more efficent immediate future implementation.
By not depending on the SettableListenableFuture we can avoid synchronization on .get calls, and with calling of listeners.
Merge branch 'master' into unstable_staging