VecRestoreSubVector for non-contiguous SubVector.
PCHYPRE: added interface to auxiliary space Maxwell solver AMS

Interface is under testing.
Some specific functions could be namespaced to AMS
Plex: added DMPlexGet/SetMaxProjectionHeight()

The idea is to accomodate meshes (such as non-conforming meshes), where
a global basis function restricted to a cell may not correspond to a
single basis function on the cell, but to a linear combination.  The
most general case would be to do an L2 projection, but we would have to
find a way to invert control to use a KSPSolve().  This approach at
least expands the available set of local projection operations.
PetscDualSpace: added PetscDualSpaceGetHeightSubspace()

We already acknowledge that a functional in the dual space may have its
quadrature points limited to a mesh point in the boundary of a cell.
This goes one step further and reproduces those functionals in terms of
a reference element for the lower-dimensional mesh points.  This was
written to be used for function projection for non-conformal meshes:
a global dof may not align with any local cell dof, but may align with a
facet or edge dof.  Something like this would also be necessary for
implementing Scott-Zhang interpolation
(http://dx.doi.org/10.1090/S0025-5718-1990-1011446-7).
Plex: start implementing projection with height > 0.
Plex: protect against field projection with height > 0.

The function DMPlexProjectFieldLocal() relies on PetscDS more than
PetscDualSpace, so using PetscDualSpaceGetHeightSubspace() won't work.

DMPlexProjectField() isn't used anywhere, and it isn't clear to me why
it looks its implementation is so different from
DMPlexProjectFunction().  It has added complexity because it uses field
jets instead of field values to evaluation the functions, but it tries
to project the resulting functions back into the original discretization
space.  If I'm using P_1 Lagrange finite elements, and I want to
calculate a function involving its spatial derivatives, would I want to
project that function into a P_0 discontinuous approximation space?

Anyway, no support for now.

Plex: fixes to recently added (squash this)
DualSpace: 0-order Lagrange spaces do not have dual spaces for height > 0.
Plex: skip empty loops for empty dual spaces
PCHYPRE: need to cal setdimension otherwise hypre AMS solver will assume dim=3
Plex: Fix LaTeX mesh output
Plex ex1: Typo
SNES ex12: Misspelling
Plex ex12: Added test for parallel partitioning
Plex ex12: Add overlap
add MatCreateMPIBAIJConcatenateSeqBAIJ() to be used by MatGetRedundant for sbaij format; bs>1 is not tested yet
MatCreateMPIBAIJConcatenateSeqBAIJ() works for bs>1
cleanup src/mat/examples/tests/ex87.c
cleanup src/mat/examples/tests/ex87.c
add MatGetRedundantMatrix_MPIBAIJ() -- almost same as MatGetRedundantMatrix_MPIAIJ()
Merge branch 'tisaac/thplex'

This merge brings in related work in the following areas:
- Added a local constraint matrix to DM (see DMSetDefaultConstraints())
- Added point-to-anchor-point constraints in DMPlex (see
  DMPlexSetAnchors()), which build on the DM constraints
- Added hierarchically-constrained points to DMPlex (see
  DMPlexSetReferenceTree(), DMPlexSetTree()), which builds on the anchor
  constraints
- Tests for these constraints in src/dm/impls/plex/examples/ex3.c (try
  runex3_* examples in that directory)
- Added quadrature order (see PetscQuadratureGet/SetOrder()) (work by
  Matt Knepley)
- Added default return values for DMGetCoordinateDim() (defaults to
  DMGetDimension())

Conflicts:
	include/petscdmplex.h
	src/dm/dt/interface/dt.c
	src/dm/impls/plex/examples/tests/ex3.c
	src/dm/impls/plex/makefile
	src/dm/impls/plex/plexfem.c