[MLIR] Fold away divs and mods in affine ops with operand info
Fold away divs and mods in affine maps exploiting operand info during
canonicalization. This simplifies affine map applications such as the ones
below:
```
// Simple ones.
affine.for %i = 0 to 32 {
affine.load %A[%i floordiv 32]
affine.load %A[%i mod 32]
affine.load %A[2 * %i floordiv 64]
affine.load %A[(%i mod 16) floordiv 16]
...
}
// Others.
affine.for %i = -8 to 32 {
// Will be simplified %A[0].
affine.store %cst, %A[2 + (%i - 96) floordiv 64] : memref<64xf32>
}
```
Reviewed By: springerm
Differential Revision: https://reviews.llvm.org/D143456