Fix the application of krylov_solver parameters in PETScSNESSolver.

Suppose someone calls

solve(F == 0, ..., solver_parameters=sp)

with

sp = {"nonlinear_solver": "snes",
      "snes_solver": {"krylov_solver": {"absolute_tolerance": 1.0e-99}}}

The options under "krylov_solver" weren't being applied previously.
Some more improvements to the options handling in PETScSNESSolver.
Merge branch 'master' into pefarrell/fix-snes-ksp-solver-tolerances

Conflicts:
	dolfin/nls/PETScSNESSolver.cpp
Minor formatting fixes.