Fix for user-provided MatFDColoring in SNES
changed src/snes/examples/tutorials/ex14.c back to testing user MatFDColoring
sys: cannot do input validation when !PetscInitialized

PetscInitialized() and PetscFinalized() may be called before
PetscInitialize() or after PetscFinalize(), thus they cannot use
validation or stack macros.
sys comm: use union instead of void* and memcpy for MPI_Comm as an attribute

We pack an MPI_Comm into the attribute pointer so that there is no PETSc
memory allocation needed to hold the reference.  The degree of the
pointer can be confusing when using a loose void* pointer and memcpy, so
use a union instead.
sys: use union for Bcast of an MPI_Comm in PetscObjectName
sys comm: separate destructors for inner and outer comms

This simplifies control flow relative to the old version where the same
destructor was used for both inner and outer comm.  The outer comm
destructor still redundantly calls MPI_Attr_get, but demonstrates that
this call is unnecessary.  The redundancy will be removed in the sequel.
sys comm: remove redundant self-call to MPI_Attr_get in DelComm_Outer

MS-MPI (2008 and 2012) invalidates the communicator before calling the
attribute destructor.  This is considered a bug as evidenced by test
attrdeleteget added to MPICH in:

  commit c532aacc14f77a04ffca0c212731700a5d3d9a01
  Author: Jed Brown <jedbrown@mcs.anl.gov>
  Date:   Sat May 18 12:55:38 2013 -0500

      test: add attrdeleteget, MPI_Attr_get called from delete_fn

      With MS-MPI 64-bit from HPC Pack 2008 and 2012, MPI_Attr_get returns
      error code 773 when called from delete_fn on a communicator obtained
      from MPI_Comm_split.

      The standard is not explicit that the 'comm' argument of delete_fn must
      be valid, so this test is only in effect when !USE_STRICT_MPI.

      Signed-off-by: Jed Brown <jedbrown@mcs.anl.gov>
      Signed-off-by: Satish Balay <balay@mcs.anl.gov>

However, in PETSc, the attribute value is already passed as an argument,
so we need not call MPI_Attr_get to obtain it.

Note that although we still call MPI_Attr_delete and MPI_Attr_get on the
inner comm, that communicator has not been invalidated yet.
Setting -snes_fd_color clears the Jacobian context.
Fixed use example of MatFDColoring in the manual
Fix TS use cases of MatFDColoring
Better scoping for -snes_fd_color option to prevent odd side-effects

Getting the DM in SNESSetFromOptions broke FAS.  As -snes_fd_color has no real use
in SNESFAS, SNESGetDM should only be called when needed in SNESSetFromOptions().
provide informative error message when MatGetMultiPorcBlock_xxx() is not supported
rm white spaces
Merge branch 'jed/comm-attr-delete'

Fix problem with MS-MPI where keyval is invalid when Petsc_DelComm is
called.  Now we split into Petsc_DelComm_Inner and Petsc_DelComm_Outer
and no longer need to use MPI_Attr_get.

* jed/comm-attr-delete:
  sys comm: remove redundant self-call to MPI_Attr_get in DelComm_Outer
  sys comm: separate destructors for inner and outer comms
  sys: use union for Bcast of an MPI_Comm in PetscObjectName
  sys comm: use union instead of void* and memcpy for MPI_Comm as an attribute
  sys: cannot do input validation when !PetscInitialized
Merge branch 'hzhang/mat-multiprocblock' into maint

* hzhang/mat-multiprocblock:
  rm white spaces
  provide informative error message when MatGetMultiPorcBlock_xxx() is not supported
Merge branch 'maint'

* maint:
  rm white spaces
  provide informative error message when MatGetMultiPorcBlock_xxx() is not supported
implement MatGetMultiProcBlock_MPIBAIJ()
add output file for testing MatGetMultiPorcBlock()
cleanup  MatGetMultiProcBlock_MPIBAIJ()
Merge branch 'hzhang/mat-multiprocblock_baij'