Make determination of map from coarse to fine cells more robust

Our intention when running in parallel is to refine and then shrink
halos.  This breaks the nice simple map between coarse cells and their
fine equivalents in the original numbering.  Instead, before shrinking
the halo, label each fine cell with its parent and then use that label
to construct the correct map between renumbered coarse and fine cells.