Use Floyd-Warshall's algorithm (inefficiently, for now) to generate proper movement ranges.
Precompute all paths in the graph when the graph changes and when it is constructed.
Merge branch 'floyd-warshall'