Modifying preconditioner handling in solvers

Need to enable PhysicsModels to use preconditioners.
Moving the callback function handler into Solver,
rather than separate implementations
Merging preconditioner API changes