Monitor solver convergence

Adds a few features to solvers using PETSc KSP:
* print more verbose information if solver does not converge
* call `KSP.setFromOptions()` to read parameters from `PETSC_OPTIONS` environment variable
* print residual per iteration if flag `monitor_convergence` is set
* plot convergence history to a file if flag `plot_convergence` is set (has no effect if `monitor_convergence` is not set)
* the value of the parameter `plot_prefix` is prepended to the file name