add enriched element support to core_types
added FEEC-inspired tests for enriched elements on extruded meshes
Merge pull request #97 from firedrakeproject/enriched

Enriched element support
Slightly loosen tolerances in test_enrichment_1_feec
Travis: petsc >= 3.4 no longer in PyOP2 requirements-minimal.txt
Allow running test_mixed_mats by executing the module
Simplify coordinate field handling in extruded case

The coordinate field we pull out of the measure is the same as the
coordinate field on the mesh, no need to special case for the extruded
case.
Allow interpolation on a subset
Document boundary edges in UnitSquare
Document boundary edges in UnitCubeMesh
Eliminate temporary in Expression
Correct error checking for Expression interpolation

Previously we were first checking whether the expression rank and
shape matches that of the function space. This was causing the wrong
error message for spaces that don't support point evaluation and
therefore one needs to use projection instead.

We initially make sure that we have an expression with a value for
each component in the value shape for each function space.
DirichletBC constructor correctly deals with Expressions

Previously we only supported literal constants or Functions as
boundary expressions. Add support for Expressions, which are either
interpolated or projected onto the function space, depending on
whether or not it supports pointwise evaluation.
Reconstruct products via the * operator in expression splitter

Reconstructing ufl.algebra.Product will fail if one of the operands
has a non-empty shape i.e. is e.g. a coefficient on a vector-valued
function space such as BDM.
Minor clean up of boundary extraction
Support lists of markers in facet subsets and DirichletBC

Build a cache of marker ids -> subsets for any given iterable of
markers as they are requested.
Zero rows in all diagonal blocks of a MatNest
Correctly apply BCs on subspaces

If a DirichletBC is defined on a subspace of a mixed function space,
make sure we only apply to the appropriate subspace of the Function.
Pass down right boundary conditions to MixedMap components

A DirichletBC is only defined on a subspace of a mixed function
space, so it needs to be applied to the appropriate maps when
building a MixedMap for cell -> node etc.
Minor non-covergence error message format change