Add a fix and test case for issue #184, where IntroduceVariableReferences was erroneously skipping over nodes in complex binary expressions.
Add an optional filter predicate to the VisitChildren function that allows filtering which children are visited.