Bug 2055: Handle Tx create in TransactionProxy resiliently

    Modified TransactionProxy to utilize the FindPrimaryShard
functionality
    to wait until the shard is initialized. Also added retries to
    the CreateTransaction operation to wait a period of time for the
shard
    to elect a leader. This makes it more resilient to avoid transient
    timing/sequencing failures, particularly on startup.

    In addition, the FindPrimaryShard and CreateTransaction operations
are now
    done async (non-blocking). The futures are combined to yield the
    CreateTransactionReply which is passed to a new class
    TransactionFutureCallback on completion. The
TransactionFutureCallback
    class creates and stores the TransactionContext which subsequent
    read/write/delete/ready transaction operations can access. If a
    transaction operation occurs before CreateTransaction completes, the
    operation is cached in TransactionFutureCallback and executed when
    the CreateTransaction future completes.

Change-Id: Id9cdc9641038922d6209c44d924bd168658a71fb
Signed-off-by: tpantelis <tpanteli@brocade.com>