add SudokuSolver.getFirstSolution() and Board.isSolveable(). only attempt to find solution if Board.isSolveable() is true