Bug 508: Improved error reporting for failed canCommit phase.

Original implementation did not provide enough information
when transaction precondition failed.

Introduced new Exception DataPreconditionFailedException
which captures fail reason and path to subtree
for which precondition failed.

This helps debug accidental overwrites / conflicting
writes between transactions.

Change-Id: I0133fd3fdb8e6492bf457dab7b20efa67fd6e2af
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>