Encapsulate bbox operations for matching in a structure

BBOX_OPERABLE_GRAPH is used by the matching code to do the necessary
operations on the pattern graph; indeed, for the outer loop of the
greedy matcher, it essentially replaces the pattern.

The idea of this is that we don't have to necessarily record the
changes.  Instead, we can just operate on both sides of a rule at once,
but without the matching code even knowing what a rule is.