Refactor some of location logic into service, which can now pass a given location to the tasks (helps with spoofing location for testing).