Implement norm and errornorm

More Dolfin compatibility.
Pass cell_orientations to par_loop where appropriate

If the element has a contravariant piola mapping, the sign of detJ is
important.  In the embedded manifold case, this means we need to pass in
the globally determined cell orientations to the kernel.
Add mixed poisson on sphere test
Add mixed Laplacian on embedded square test

Solve the mixed Laplacian with inhomogeneous Neumann boundary conditions
on a unit square embedded in 3D.
Provide better error on non-convergence of solve

If the SNES reason is unknown, it's probable that the inner solve failed
to converge.  So pull out that reason and add it to the message.
Merge pull request #192 from firedrakeproject/fix/better_convergence_error

Fewer "unknown reason" convergence messages.
Implement non-unit interval meshes.
Check the non-interval meshes.
Fix docstrings and mention IntervalMesh in manual
Merge pull request #189 from firedrakeproject/intervalmesh

Implement non-unit interval meshes.
Lint pacification
Fix interior facet test for matrices

This test was testing for an invalid result, so fix that.  Also, split
test apart and parametrize interior facet combinations to make it easier
to see what fails.
Merge pull request #184 from firedrakeproject/cell-orientations

Pass cell orientations in to par_loops where appropriate (element
mapping is contravariant piola, gdim != tdim).
Merge pull request #190 from firedrakeproject/fix/facet_test

Correct interior facet integral test and add better coverage of
different combinations of restrictions.
DMPlex: Adding basic DMPlex interface

UnitSquare/Cube meshes are now built on-the-fly from a DMPlex object,
from which the cell_node_list is created when building a FunctionSpace.
For mesh files a simple DMPlex object is created from the old Fluidity
mesh object and handed over to the new DMPlex interface.

The new DMPlex interface is very basic and only works in serial with
non-extruded meshes. Higher order function spaces and boundary
conditions are also missing.
DMPlex: Enabling higher-order function spaces

FunctionSpaces now hold a Plex-generated PetscSection that
describes the global node numbering (topology->DoF mapping).
From this we generate a Fenics-style local numbering for each cell
closure, which allows us to populate the cell_node_list.
DMPlex: Marking PyOP2 entity classes in the Plex

This is required to reorder DoFs into contiguous vector sections.
DMPlex: Reorder global and universal node numbering

Reordering the global and universal node numbering created by the
Plex is required to make DoFs contiguous within each PyOP2 entity
class. The DefaultSF that defines the halo-exchange can then be
derived from the new node numbering exchange.

DMPlex: Cleaning up node renumbering
DMPlex: Creating Halo objects from DMPlex

We derive the local receives and remote sends from the associated PetscSF
and propagate the remote sends to the sender. The global_to_universal
numbering map is derived directly from the global and universal numbering
sections associated with the FunctionSpace.
DMPlex: Adding support for internal and external facets

Internal and external facets are marked on the sequential Plex
using DMLabels, from which the auxiliary _Facets object can be
derived. The local facet numbering is derived according to Fenics
rules from the Plex topology.