Geolocation refactor

This makes it so we don't provide any constantly streaming geolocation updates directly from the device, instead we provide API's to listen for periodic updates to location (every minute or so). Trying to make these updates as accurate as possible.