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.