Sudoku: puzzle data structures WIP

WIP implementation, setting up the data structures for an actual sudoku
puzzle. uses a dictionary of candidate values for each grid square.
Unit tests for constructor and equals().
Sudoku: minor code cleanup