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.