calls to ParFiniteElementSpace::GetProlongationMatrix() in places
where only the action of the matrix is required.
In ParNonlinearForm::Mult(), use the parallel prolongation operator
instead of relying on the GroupCommunicator.
In class ParGridFunction, implement the inherited virtual methods
SetSpace(FiniteElementSpace*), MakeRef(FiniteElementSpace*, double*),
and MakeRef(FiniteElementSpace*, Vector&, int) - they will use a
dynamic_cast to get required ParFiniteElementSpace*. Also, made the
versions of these methods taking ParFiniteElementSpace* non-virtual.