La solve class

- Refactor solving.py (which had become rather over-large)
- Add a LinearSolver class which users can use to construct solvers for long-lived preassembled systems
- Address #390 by adding constant_jacobian kwarg to LinearVariationalProblem (default True)

This removes our dependency on PyOP2's solver.  So that could potentially go?