Establish subsets for the boundary marks.
Cause external facet integrals to occur only over relevant subset
Minor bugfix to cause the correct subset index to be found. Introduce test of facet integrals.
Initial definition of the DirichletBC class.
Wire in modified maps for external boundary conditions

Probably doesn't work yet but at least it doesn't cause any
regressions.
Extend boundary condition support to interior facet and cell maps
Put all the brackets into the tests now that cell_node_map is a method rather than a property.
Tweaks to cause dirichlet conditions to actually be applied

Although the dientification of boundary nodes is currently fubar.
Correctly calculate nodes involved in a DirichletBC

And cause those BCs to be correctly applied to matrices.
Register parent maps of boundary condition maps

This is in order to make error checking on sparsities work.
Add ability to insert boundary condition values into residual vector

This is achieved by adding the ability to evaluate a pointwise
expression only on a subset.
Ensure boundary conditions actually show up in nonlinear solve
Fix a couple more typos, and use union1d instead of unique.

After this change, nonlinear solves with strong boundary conditions
appear to work.
Apparently working strong boundary conditions test

To get this working it was necessary to impose the boundary
conditions on the initial guess passed to the nonlinear solver.
Replace linear equation objects / solvers with subclasses of nonlinear cases

This reduces total code paths and also enables strong boundary
conditions to work in the linear case.
Also test strong BCs via the "linear" solver route.
Tighten the default relative tolerance on linear solves
Clear up the remaining outstanding issues at review:

 * Use values_with_halo
 * Rename map_dim as map_arity
 * Document the subset argument to assign.
Remaining halo and documentation issues.

 * Cause _with_halo(s) to be used where appropriate.
 * Fix a docstring.
Merge pull request #44 from firedrakeproject/meshfunctions

Partial boundary integrals and strong boundary conditions

 * Compiled expressions can now be passed an OP2 subset and will only be applied on that subset (in a future development, this subset will be encapsulated in a Firedrake Subdomain object).

 * cell_node_map, exterior_facet_map and interior_facet_map now take an bcs argument, which must be a list of boundary conditions. If this is not empty, the map returned will take negative values on the corresponding boundary condition nodes. This facilitates the imposition of strong bcs.

 * A subsetted measure (e.g. *ds(1)) will cause integration only over the correspondingly marked boundary region.

 * LinearVariationalProblem and LinearVariationalSolver have been removed and replaced with thin wrappers around the corresponding nonlinear objects.