Changed the board class so that it is self constraining. Once a value is assigned, that value is removed as an option from all other cells in it's row, column and box. The board also constrains all values as they're initialised, and does not allow clashes to be placed on the board. There is currently a small glitch where if you generate a specific board and a cell has no options, the board will print out a 0. During runtime such a board should be discarded as it has no solution.