Detect cycles while constructing a path

In PathFinder.BuildPath(), throw an exception if the path under construction
already contains the next predecessor in the chain.
Implemented depth-first search

Added class PathSampler.PathFinders.DepthFirstSearch
Fix exception in TestPathingUsesSelectedAlgorithm

Change use of LINQ Single to First. There are now three pathing algorithms
(A*, BFS, DFS) so excluding one will leave two, which causes Single to
throw an exception. Use First to select only one instead.
Sort the list of pathing algorithms shown in the ComboBox

Extracted new functions PathFinder.GatherPathingAlgorithms and
PathFinder.GetDisplayName. Use the display name to sort the list
of pathing algorithms.