Add iteration control mechanism and provide default based on residuals (2nd try).

This closes #44 and goes part way to closing #43. We can add more flexibility to norms etc in 0.4.0.

This supercedes #106.