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.
Fixup interpolate
Fixup bcs
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
Add a mixed poisson MMS test without boundary conditions
Pass correct flatten flag on facet integrals
Add mixed Poisson test with strong boundary conditions