Sudoku/Rust: Use each() to loop over vectors

each() is optimized to avoid unnecessary bounds check, improving
performance by quite a bit.
Sudoku/Rust: Force the compiler into better inlining

For some reason, the current rust compiler (0.6) doesn't inline the some
stack closures. By turning them into methods, we can force inlining,
which greatly improves performance.
Sudoku/Rust: Avoid repeated bounds checks in the inner loops
Sudoku/Rust: Use the same data types as the C implementation