Problems can have multiple solutions, but Backtrex currently returns the first one it finds. Instead it should return a lazy Stream of all of solutions (even if there's infinitely many!). It should also provide a function to get the first n solutions and the Stream of the remaining solutions.
Conceptually all this should require is upon finding a solution...
- enqueue it and
- backtrack to the next possible state