depthFirstSearch() is a 'dfs puzzle-solver' that tries to find a path to a
winning game position defined by the given roles within the given
number of moves.
This depthFirstSearch() variant sorts the moves according to their
heuristics provided by the given player before performing
its otherwise 'depth-first-search' algorithm.