Implements a pass that reorders associative operations when beneficial. For example, (a + c0) + c1 is rewritten as a + (c0 + c1) when cs are constants.