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