Introduce signals into the Solver base class.

This patch uses signals to determine whether a current iterate
satisfies the convergence criterion. Currently, the only slot that
is connected to a signal is the SolverControl::check() function,
but users will be able to connect different slots there as well,
closely monitoring the convergence process.

Adjust the testcases.
Add a mechanism to attach slots to the signal that now controls convergence.

Document this with an example that illustrates how we can observe
the iteration in process.
Document in classes derived from Solver that they use the signal/slot mechanism.