First part of watchpoint tree refactoring. Currently Tree implements
strategies for setting both recursive and non-recursive watchpoints,
and logic for traversing and buidling tree.
The refactoring is about splitting tree traversing / building into Node
and Root structs, and implementing two separate trees - one for Watcher
and one for RecursiveWatcher.