- added clippy lints and fixed the resulting issues
- moved build_possible_values_db() into the new() call
- extracted the skip_db functionality into their own functions
* backtracking: main loop simplified
* instead of the `fixed` Vec, we now use skip fields to calculate
how many fields to skip in `next()` and `prev()`.
This is faster because we get rid of the `if` statement
thus no branching occurs.