Add iteration control mechanism and provide default based on residuals.

This closes #44 and goes part way to closing #43.  We can add more flexibility to norms etc in 0.4.0.
Why not pure virtual interface here as well? Returning `false` by default might cause weird bugs/behavior in the future. Having it purely virtual enforces implementation in the sweeper (which you did for the `EncapSweeper`).