Fix : Remove last directory of a node

- Newly define logic of node removal transaction.
- [TreeNode._removeNode] only updates data of children set of a tree.
Any function removes a node should call this function.
- [Node.removeChild] deletes a child node and run callback function if
registered.