optimize walking over a commit’s tree

- replace shallow-tree-walk with deep-tree-walk
- invert control of tree walker: rather than the recursive helper function in commit-tx-data, pass a walker function to deep-tree-walk
- a tree walker signals if the path is new, and if not, the deep-tree-walk will skip over uninteresting subtrees
- add index to :node/object and make check for existing node much more efficient
- fix logic for testing if path is new
- make sure future is deref’ed when transacting a commit’s tx data