ADDED: can specify own preconditioner in steadystate solvers

User can input their own preconditioner using the 'M' keyword arg.