Generalizes the following canonicalization pattern to all associative and commutative binary ops in the `index` dialect. ``` x = v + c1 y = x + c2 --> y = x + (c1 + c2) ``` This includes: - `AddOp` - `MulOp` - `MaxSOp` - `MaxUOp` - `MinSOp` - `MinUOp` - `AndOp` - `OrOp` - `XOrOp` The operation folding is implemented using the existing folders since `createAndFold` is used in the canonicalization.