timeout and error handling for navigator.geolocation calls

Sets a timeout so that geolocation.getCurrentPosition() won't last forever, and error handling so that the user is given updates when getCurrentPosition fails for whatever reason.