Improve constraint search

Will now fill in the holes when elimination leaves a single possible site for
a particular value. Not perfect as it tries to assign the same value several
times but finds the solution to easy puzzles without backtracking.
Working implementation of backtracking