This interface allows callers to reify dimension sizes of a shaped value without depending on any dialect. This interface and its helper functions can replace switch-case statements that generate tensor.dim/memref.dim ops (depending on the type of the shaped value) in various parts of the code base.
This revision also removes createOrFoldDimOp and similiar functions from the Linalg dialect and the Vector dialect.