Finished implementation of puzzle-solving via searching
- elimination is tried first
- if elimination doesn't work, we start trying all combinations of remaining possibilities, starting with those cells that have the fewest