Added function to solve for unique candidates (hidden singles). Updated the solve() function to loop using the 2 current techniques until the puzzle is solved, or until no progress is made using either technique.
Increased number of random givens from 30 to 40, to make it easier to test simple solving functions
A test file used for running the generator and solver. NOT A UNIT TEST.