PETSc solvers: improve the way they are implemented
Reconstructed from comments in the code following the Redmine issue with M3DISIM Server
Currently there is really hardcoded stuff involved, whereas some could be handled much more gracefully with a factory.