Sympy code for calculating BDF formulas
Add some more example residuals: stiff ones and a constant one
Add a residual +dydt function for the ll form of the llg
Add code-generation code to sym-bdf3.py

For generating (e)BDF formulas.
Small updates to utils

* Simplify implementation of partial_lists
* Add function to escape latex special characters in a string
* In assert_list_almost_equal check the list lengths
* Force lists (rather than iterators) in a few places to avoid bugs
Add higher order bdf functions

* Code generated using sympy (in sym-bdf3.py)

* Also added self tests
Enable mp bdf3 with bdf approximation to derivative
Rename time_adaptor->general_time_adaptor, scaling_factor * dt -> new_dt

To
* Avoid name-clashes
* Make it clearer that we are reusing the same result
respectively.
Improve argument structure in odeint/newton solver

All extra kwargs are now passed down into the newton solver.

Allows us to remove some duplicated default args.

Allows max_iter, newton_tol and jacobian_fd_eps to be passed in from top
level.

Also print Jacobian if singular (for debugging).
Add bdf2 ebdf3 method for testing