Bug-fix in 2+1D adaptivity.

Reported by Rebecca. This would show up if using 2+1D adaptivity and
having a python expression for maximum edge lengths but not for
minimum edge lengths.
Fix bug local face numbering for hexes.

Modify routine face_local_num_int for FAMILY_CUBE elements so it uses the local node numbers rather than the vertex indices. When
setting up the face_lno in add_faces, the functions are passed the vertex indices for the face rather than the vertex node numbers.

Previously the local face node numbering was incorrect for hex elements, where for some elements (not all) face_local_nodes
could return the same local nodes for two different faces. This could and most probably will cause any calculation using hexes and
face information (e.g. DG) to fail.

Added unit test for the function face_local_num for linear hex.
Add code to copy element halos to ensure vtkGhostLevels are output if dg-ifying a continuous mesh in vtk_write_fields.
DMPlex: Adding option and test for DMPlex-ExodusII mesh reader
DMPlex: Build and distribute a DMPlex from an ExodusII mesh file
DMPlex: Allocate coordinate field/mesh and populate coordinate field
DMPlex: Build mesh and surface connectivity from DMPlex
DMPlex: Derive surface connectivity from a given DMLabel

This allows us to derive boundary IDs in-place and reduces the
search space to only include points marked in the mesh file.
DMPlex: Make the plex accessible in populate_state

This is requires to generate the halo from it.
DMPlex: Replace old Gmsh reader
DMPlex: Add halos from DMPlex's point-SF

Uses DMPlexDistribute to perform domain decomposition with a
level-2 overlap and derives and accurate L2 halo. We then copy
this halo object into the L1 halo, since DMPlex halo numbering
does not separate L1 and L2 halo regions.

Note: This requires level-2 overlap in DMPlexDistribute,
which is only avalibale in very recent versions of petsc.