As a developer, I would like to use the K-shortest path algorithm as a generic GraphPathSearch algorithm, so that I can configure it as an alternative search without knowing its specific usage.
- Refactor name to be compliant from 'KshortestPathSearch' to 'KShortestPathsSearch'
- Refactor to add 'extends GraphPathSearch<...>'
- Provide results via Result.paths() as a SortedSet to preserve the priority
- Eliminate code duplication and perform general code cleanup and stylistic adjustments