Minimal solver
- solve as much as you can with Naked Singles
- when we get stuck, pick a square, and then pick an option in that square.
- recurse, trying to solve the ammended puzzle with Naked Singles.
- if we can't, then throw out that value and try another