Accept kwargs in Expression construction

This allows users to define additional variables in the Expression
constructor that they can refer to by name in the code snippet.  Both
scalar and vector-valued variables are supported (the latter indexed in
the normal single-indirection way).  The value of the variable is
available on the Expression as a public property of the same name (which
also allows setting of values).
Wire Expressions with user arguments into interpolate

If the expression has user-provided arguments, we need to arrange for
them to be available in the kernel body and pass them to the par_loop.
Test expressions with user-provided arguments
Add state slot to Expression

Bumped whenever a value in the expression is modified.
Record original value passed in to DirichletBC constructor

We will need this to do the right thing for bcs with Expressions that
contain user-provided arguments.
Re-interpolate Expression if state has changed

If the user has modified a value in an Expression that cached
function_arg on the bc is wrong, so notice this and update it.
Add tests of BCs with user-provided Expression arguments
Update docstring of DirichletBC constructor
Test modifying constants in bcs
Add section on time-dependent bcs to docs

Mention usage of Expressions with user-provided arguments and Constants
as well as literal values.
Merge pull request #310 from firedrakeproject/expression_values

Add user-defined variables to Expressions (more Dolfin-compat).

* expression_values:
  Add section on time-dependent bcs to docs
  Test modifying constants in bcs
  Update docstring of DirichletBC constructor
  Add tests of BCs with user-provided Expression arguments
  Re-interpolate Expression if state has changed
  Record original value passed in to DirichletBC constructor
  Add state slot to Expression
  Test expressions with user-provided arguments
  Wire Expressions with user arguments into interpolate
  Accept kwargs in Expression construction
Fix header levels in variational problems documentation
Move checking for orientation flag to ffc_interface

Now that we're splitting forms, the orientation flag needs to be
determined for each sub-form, rather than the original form as a whole.
So do that by devolving the job to ffc_interface.  When an FFCKernel is
instantiated, it now carries information about whether it needs a
cell_orientations argument or not.
Add test of mixed helmholtz problem on sphere

This exercises cell orientation passing for split forms.
Plausible non-extruded implementation

Include the boundary node discovery method in the BC creation methods.
Currently untested.
Fix error norm for constant solutions

Fix error norm so that Constants and Expressions can be used as the
exact solution.
Geometric boundary conditions test.
Disable geometric boundary conditions for extruded
Add short section in docs on geometric BC method
Merge pull request #299 from firedrakeproject/enhanced_bcs

Geometric determination of boundary condition nodes (useful for applying
strong bcs in discontinuous spaces).

* enhanced_bcs:
  Add short section in docs on geometric BC method
  Disable geometric boundary conditions for extruded
  Geometric boundary conditions test.
  Fix error norm for constant solutions
  Plausible non-extruded implementation