Improved the parse tree traverser

I'm now using an instance of Traverser to traverse the tree. It
allows me to specify explicitly when/what subtrees should be
recursed on.
Recurse on nested Selects as well