Fix logic around pc->dm in PCMG
PCMG currently has a lot of logic checking for the presence of
pc->dm, but it is automatically set if, for example, if the high-level logic comes from SNES. If a user manually sets coarse grids using the PCMG API,
DMCoarsen will still be called, despite possibly having
dm->ops->coarsen equal to
NULL (thus seg-faulting). To fix this, we should (a) not call
DMCoarsen when the user has already configured coarse levels and (b) test for capability and make such coarsening optional.
Untangling PCML and PCGAMG from meddling with PCMG internals should simplify this process.