PathService implementations that used to take an SPTService object in their constructor now take a SPTServiceFactory instead, which is used to instantiate a new PathService every time getPath() is called. As instances of SPTService could contain algorithm state, PathService using the same instance across simultaneous calls to getPath wasn't threadsafe