Gathers all available paths and places them in instances of CondensedPathChooser which makes it easy to find the best path (optionally not passing through a neighbour of ours)