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>
I've read about problems with Arrays.asList() with arrays not working properly as you may end up with an ArrayList with the first element being an array rather than an ArrayList with each element being the element of the original array.