This is useful because the result type of an op can sometimes be inferred from its body (e.g., scf.if). This will be utilized in subsequent changes.
Also introduces a new getBufferType interface method on BufferizableOpInterface. This method is useful for computing a bufferized block argument type with respect to OpOperand types of the parent op.
Depends On D128275