FC-69 Replace Remote Call with @Retryable and new Continuation implementation

Remote calls used SQS to distribute execution of command and query methods, as well as enable retrying of failed commands/queries. This causes subtle issues with failure scenarios, and problems with method call or response serialisation.
Remote calls have been replaced with equivalent functionality that does not use messaging (SQS). This change introduces new annotations, @Retryable @DeferResult and @ContinueResult. These support retries and continuations.

Signed-off-by: Steffan Westcott <steffan.westcott@clicktravel.com>
From what I've read the following will not work:

int[] ints = new int[] {1,2,3,4,5};
List<Integer> list = Arrays.asList(ints);

In this case, looks like its OK as it uses Objects rather than primitives.