Fix location delegate leak; set default timeout for single location update.

CLLocationManager often gives bad access on its delegate if delegate is not set to nil.
Default timeout is just useful thing to have.