Refactored sudoku benchmark to use traits and added some tests

Came back to look at rust and found out that this had been broken by some refactoring work. Fixed and now has tests.