Refactored sudoku benchmark to use traits and added some tests
auto merge of #5420 : boggle/rust/sudoku-with-traits, r=graydon

Came back to look at rust and found out that this had been broken by some refactoring work. Fixed and now has tests.
Make &self permit explicit lifetimes, but don't really use them
(this will be needed for snapshotting at some point).