Move all remaining join dependency stuff from squeel.

Try to add a `TreeNode` module to abstract all behaviors in the `walk_tree` method. So we can drop all join dependency stuff in Squeel.

I'm not sure that it's the best way to do it.