Bug 1576: Handle remote failures for write Tx async

TransactionProxy
  - Modified TransactionContextImpl to cache Futures from put/merge/delete
    ask operations.

  - On ready, combine all previous cached Futures and the
    ReadyTransactionReply Future and transform to one Future that
    extracts the cohort actor path from the ReadyTransactionReply. Any
    Future failure results in a failed cohort actor path Future with
    the cause propagated.

  - The cohort actor path Future gets passed to the ThreePhaseCommitCohortProxy.

  - Modified read and exists methods to also wait and verify async any
    previous cached put/merge/delete Futures.

ThreePhaseCommitCohortProxy
  - On canCommit, it first asynchronously builds the list of cohort actor
    paths from the Futures passed from the TransactionProxy. If any
    cohort path FUture fails, canCommit fails and propgates the failure
    cause.

Added extensive unit tests for both classes to cover all cases.

Change-Id: Ib9794797a654a92c305fd8cc3db2c1147a363b5c
Signed-off-by: tpantelis <tpanteli@brocade.com>
Merge "Bug 1576: Handle remote failures for write Tx async"