Provide a more flexible means of deriving jacobian assembly and application from the residual
Currently local operators decide for them selfs, whether to use numerical differentiation or not. While it is convinient at first sight, I consider it dangerous. I have heard quite some reports, where people where surprised that their error didn't converge below single precision accuracy, although they were computing with double.
I suggest to enforce a propoer jacobian implementation and drop/deprecate the mixin classes. If you don't want it, or it is not supported, this should be transparent to the user.
I see three options: a) add a wrapper class, which implement jacobian by numerical diff. b) in addition to residual and jacobian we add an additional method numerical_jacobian c) we add an enum parameter to jacobian, which defaults to analytic_jacobian and the user can explicitly call it with numerical_jacobian.
Related issues:
#45.