Removed redundant rules (clauses) from the solver.
Introduced a configurable parameter N so that the solver code can be
applied for larger (i.e., 16x16 or 25x25) puzzles easily.
The previous commit that replaced hard-coded constants with symbolic
constants in PuzzleSolver was incomplete.

I considered that NN is a better name than M for a constant
to mean N*N.
Merge branch 'solver'