Partial implementation of naked singles.  It's alive, but does not update
neighbor candidates when a cell is solved.  Proposing Cell::place_value
to encapsulate this.  Also, it does not tell you whether the naked single
was the result of Full House vs. intersection of values among row/col/block.
That would be a user-friendly touch.

This solving will ultimately be used for user hints and for other user
requests such as solve one cell, etc.

dcc 2014/3/12