Created a power grid example using the DMPlex framework.
Merge remote-tracking branch 'remotes/origin/knepley/feature-plex-generic-distribute' into shri/projects-dmcircuit
dmcircuit: More work on the prototype example.

Removed the use of DMPlexGetLabelValue().
Use DMPlexDistributeData() to move the parameter structs associated with vertices, edges.
Used one section for each parameter structure. (Total 4 sections for 4 structs).
Merge branch 'knepley/feature-plex-generic-distribute' into shri/projects-dmcircuit
dmcircuit: Preliminary sketch of the circuit API.

Partitioning and distributing the data remaining.
dmcircuit: Added circuit partitioning and distribution of data.
dmcircuit:Trivial reorganization and name change.
dmcircuit: functions for getting supported edges and connected nodes.
dmcircuit: Revised the example to use the PetscCircuit prototype API.
Merge branch 'knepley/feature-plex-generic-distribute' into shri/projects-dmcircuit
DMCircuit: First pass at DMCircuit interface.

Created a DM subclass for circuits.
Need to add documentation for majority of the interface functions.
The DM is not being destroyed correctly when using SNESSetDM(). Need to set
the reference count correctly.
DMCircuit: Removed accidentally pushed test case executable file
DMCircuit: Documentation for DMCircuit API routines.
Merge branch 'balay/fix-fenv.h-check-on-cygwin64' into maint
Merge branch 'jed/fix-restrict-cxx'

* jed/fix-restrict-cxx:
  config: define lang-specific macros in petscconf.h, choose in petscsys.h
Merge branch 'jed/fix-matop-enum'

* jed/fix-matop-enum:
  Mat: add MATOP_ values for missing functions
Merge branch 'jed/fix-fieldsplit-mg-example'

* jed/fix-fieldsplit-mg-example:
  SNES runex19_draw: check output and report errors
  SNES runex19_draw: use -fieldsplit_x_velocity_pc_mg_galerkin
DMCircuit: Keep the vectors associated with circuitdm not plexdm.
DMCircuit: First interface and implementation for DMCircuit ready.

Fixed memory leaks - these were due to incorrect reference count issue.
 The fix was to associate the vectors/matrices with the circuitdm and
 not the inner plex dm.
Associate global/local vectors and matrices with circuitdm instead of
plexdm.
The example pf.c works now without memory leaks.
MatXAIJSetPreallocation: use array[] notation to help out Fortran