Lower geolocation usage

Reduce geolocation usage by caching the lat/long values returned in query parameters. Additionally, return a friendlier error to the user if geocoding fails.