Add sudoku validation and error reporting

Here's my attempt at a solution. Turned out to be a very interesting exercise!