Branch visitors for detecting and mutating branches.

This PR replaces #547. The branch has been renamed to correspond to the name of the main file this adds.  I have addressed most of the comments that were still open in #547, and made some modifications that are dependent on PR #551.

It looks like in all of this code, in_if_cond and in_select_cond are completely mutually exclusive. Would it make sense to just have an 'in_cond' variable and just have two stacks for the true and false cases?

It looks like that would cut the code in half for each of these node visitors.