In class ParMesh:
* Introduced internal struct's Vert3 and Vert4 holding 3 and 4
integers, respectively.
* Replaced 'shared_faces' with two separate arrays 'shared_trias'
and 'shared_quads' with types Array<Vert3> and Array<Vert4>,
respectively.
* Removed the arrays 'stria_lface', 'squad_lface', 'stria_sface',
'squad_sface', and 'sface_stype'.
* Restore the array 'sface_lface' used previously. Shared face
indices are shred triangle / quad indices offset by 0 / "number
of shared triangles", respectively.
* Made the two RefineGroups methods protected.
* Added two new protected methods: UniformRefineGroups2D and
UniformRefineGroups3D. These two methods simplify the
implementations of almost all uniform-refinement methods in
the class.
* Fixed a bug in ReorderTetMesh that was causing ex8p to fail with
fichera-mixed.mesh.
* Updated the implementations of all ParMesh methods as necessary
due to the above changes.
In class Triangle, add a static method MarkEdge that works on a
given array of 3 indices.
In class Array, add a method CopyTo - implemented using std::copy.