This change enables the SparseTensorCodegen pass to reuse the majority of the readCOO/readSparseTensor code without relying on the SparseTensorCOO/SparseTensorStorage classes. It does however introduce a dynamic function call in the for-loop, so we should perform benchmarking to make sure this refactoring doesn't slow readCOO down too much.
Depends On D138365