Bug 874996 - Part 1 - Simplify handling of geolocation requests

Requests are now only put in the pending/watching requests
arrays after they have been allowed, and are removed after
being passed a single position (for getCurrentPosition) or
cleared (for watchPosition). getCurrentPosition requests that
are fulfilled by the cache aren't even added to the list.
Bug 874996 - Part 2 - Issue error events for geolocation provider errors