Adds interfaces to different search algorithms
Adds the method traverseWithAlgorithm:context:blockForEach:
Refactors to array conversion
Adds tests for depth-first algorithm