Add missing continue

After we find something is not an acceptable puzzle, we need to start
over!
Make sure we clean up in solveHelper

Since eachSolution clients sometimes use exceptions for flow control,
we need to make sure that the board ends up in the same state before and
after eachSolution is called, no matter what.  A better approach would
be to restore during the top level call to solveHelper only if an
exception has occurred, or better yet, to not use exceptions for flow
control.
Test that the number of givens matches what we expect
Properly clean up cell values when trying again during digging
Fix broken comparison
Stop worrying about reflections for the last few cells