Add NewtonConvergenceTest functor and use it to check convergence

* INTERFACE CHANGE: if you accessed Newton_solver_tolerance directly
  through the protected variable rather than the access function you
  will need to change to using the access function. The compiler will
  complain if this is the case.

* More flexible than hard coding a convergence test.

* Allows new convergence tests to be used without recompiling the entire
  library.