Use PETSc's `DM` to store `SF`s
PETSc's DM can store both the migration SF and an SF that is responsible for transforming between PETSc's "global" row order and the "natural" row order (the degrees of freedom sorted by global element/vertex index).