at was only used by the tests
rename solve --> eliminateConstraints
failing test for choices.
map a cell to a number of choices
fix rename failures
rename stepCell to eliminatePossibilities
eliminate some duplication on bounds
inline function definition
rename to applyConstraints
failing test for determining whether we are in a valid position
construct an invalid grid
first (failing) example
OK, but the definition of isInvalid is wrong
document code smell
distinguish a raw grid from a grid
failures
start separating out the types more cleanly
split into types
shouldnt be possible to build an invalid grid
monads