Using parallel collections in BFS
Added data from game puzzle to main

Commented for now, simpler puzzle still in place so it's easier to
verify
small cleanup
Using new BFS API in test
Added Depth First Search

BFS is not very effective for most use cases
Changed BFS API to use iterable instead of set

This way it's consistent with DFS where Iterable will be required so we
can expect some ordering - good for testing
Made DFS a lot more efficient

Storing all those paths in each stack frame turned out to be very costly