Adds the CompletableFuture

This makes reactive programming possible. The InvocationImpl has been changed
so it returns a CompletableFuture instance which eventually can be exposed directly
to the end user.

Exposing it to the end user using e.g. AsyncQueue/AsyncAtomicNumber etc will be part
of other pull request.
CompletionFuture: the andThen can be configured with an executor
CompletableFuture: Extracted the BackupCompletionCallback to clean up Invocation interface
Renamed to CompletableFuture
CompletableFuture makes use of the AsyncExecutor
Working on review comments
Dealt with the Interrupted exception
Merge branch 'improvement/3.x/completablefuture-basic-refactoring' of github.com:pveentjer/hazelcast
Merged #1234. Cleaned up op.async field. Cleaned up commented sections. Improved InvocationTest.