Support extruding meshes of arbitrary base dimension

As well as extrusion of a n-dimensional base mesh into an (n+1)th
dimension by adding an additional coordinate, support radial extrusion
of n-spheres.
Add mesh reading support for embedded manifolds

We need to explicitly pass the dimension of the coordinate field down
into the mesh reader.
Guard against meshes without exterior facets

Previously we would raise a somewhat impenetrable error if reading a
mesh with no exterior facets.  Instead just build an empty exterior
facet list.
Build correct ufl Cell on mesh

The optional argument is the geometric dimension of the cell, not the
topological dimension.
Support triangles embedded in 3D in cell dictionary
Add utility function to check for mesh existence
Add an icosahedral sphere mesh class

We can programmatically generate an icosahedral approximation to the
sphere by recursively subdividing the faces of a regular icosahedron
into four triangles.  Do that and add two utility classes.

IcosahedralSphereMesh generates a mesh with specified sphere radius and
refinement level.

UnitIcosahedralSphereMesh generates a unit radius mesh with specified
refinement level.
Test assembly of volume integrals on surface of sphere

Integral of the cell area approximates the surface of the sphere.
Integral of an extruded annulus approximates the appropriate volume as
long as the layer height is very much less than the radius of the sphere
since we assume the Jacobian is independent of the position in the
element which is not actually the case.
Implement cell_orientations for meshes

Necessary to orient embedded manifolds.