Add transaction-like support to DataTree.

- This is needed to support serving batch requests(all-or-nothing)
- Like version control system, you can make changes in staging area, and
commit or abort it, before committing the changes will not be visible.