Create the Jacobian in the right place.

Move the automatic differentiation of the residual from solve to the NonlinearVariationalProblem constructor. This means that the Jacobian is still created if a user directly instantiates a NonlinearVariationalProblem. If the user passes a Jacobian, this is still honoured.
Pass the Jacobian through.

If the user provides a Jacobian, we are not allowed to forget it!
Merge pull request #67 from firedrakeproject/fix-jacobian-derivation

Build the jacobian in NonlinearVariationalProblem rather than solve if
the user did not provide it.