Bug 1073: Added support to DOMBrokerImpl for Transaction Chaining

Splitted functionality of DOMBrokerImpl to separate classes
which allows easier code reuse with transaction chaining:

New internal APIs:
DOMDataCommitExecutor - Commit executor which invokes
   three-phase commit coordination
DOMDataCommitErrorListener - Error listener for commit executor
and one execution

AbstractDOMForwardedTransactionFactory - Factory which creates
   composite transactions on top of DOMStore transactions
DOMDataCommitCoordinatorImpl - Commit Executor implementation
DOMBrokerTransactionChainImpl - Implementation of DOMTransactionChain.

Added 2 JUnit tests for Transaction Chains:
  - Test positive scenario (chain of write, read, delete transactions)
  - Test IllegalStateException when previous transaction
    was not commited.

Change-Id: Ic2290d7fb3d4ea52a44bea02b493c1e537e929a6
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
Bug 1106: Introduced OptimisticLockFailedException

Introduced two new Exceptions to InMemoryDOMDataStore:
 - IncorrectDataStructureException
 - ConflictingModificationAppliedException.

Introduced OptimisticLockFailedException to DataBroker
API which is thrown when transaction fails because
of ConflictingModificationAppliedException,
which is raised when other modification already
applied to data tree prevents commit on submitted
modification.

OptimisticLockFailedException is propagated to
the clients also via returned Future and may be
present as causeof ExecutionException when
get() is invoked on Future.

Change-Id: Ia119c9ae4c4ffa9774b45b1d6d54cade7a5b8c32
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
Merge changes Ia119c9ae,Ic2290d7f

* changes:
  Bug 1106: Introduced OptimisticLockFailedException
  Bug 1073: Added support to DOMBrokerImpl for Transaction Chaining