Assure ResponseHandler is called once and only once

Change executeAsync to return a ListenableFuture instead of a CheckedFuture since checked future requires multiple calls to response handler
Remove use of CheckedFuture from most APIs