Refactoring of FullyImplicitBlackoilSolver for preconditioning

These changes move the content of the solveJacobianSystem() method into a small class hierarchy, so that new methods (such as CPR preconditioning) can be implemented and experimented with without affecting or changing FullyImplicitBlackoilSolver.

While this change is not required now (no CPR has been implemented yet), I think it is better to merge the refactoring as soon as possible.

Some may consider it a bad idea to move the residual struct out of FullyImplicitBlackoilSolver and make it independent, but i think it is the simplest and best way to decouple that class and the residual solver classes. So far there is only one such solver class, FullyImplicitSystemSolverSimple.