Adding routines for setting user defined convergence tests for PETSc nonlinear solvers

Added PETSc function wrappers for SNESSetConvergenceTest, SNESSetFunctionNorm, SNESLineSearchSetNorms, SNESLineSearchGetVecs, SNESSetNormType
Added PETSC_SNESSETCONVERGENCETEST to allow users to set thier own convergence tests in a similar manner to how the PETSc nonlinear solve monitor has been setup.
This requires the OpenCMISS routines that setup the nonlinear solver in solver_routines.f90 (eg linesearch or trust region solvers) to point to the function that will test convergence as shown below.
CALL PETSC_SNESSETCONVERGENCETEST(LINESEARCH_SOLVER%SNES,PROBLEM_SOLVER_CONVERGENCE_TEST_PETSC, &
  & LINESEARCH_SOLVER%NEWTON_SOLVER%NONLINEAR_SOLVER%SOLVER, &
  & ERR,ERROR,*999)

Tracker Item 3497
Merge branch 'NonLinearSolvers' into TightCoupling