Make the reduction handling in OpenMPIRBuilder compatible with opaque pointers by explicitly storing the element type in ReductionInfo, and also passing it to the atomic reduction callback, as at least the ones in the test need the type there.
This doesn't make things fully compatible yet, there are other uses of element types in this class. I also left one getPointerElementType() call in mlir, because I'm not familiar with that.
clang-format: please reformat the code