Bug 874996 - 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 canceled (i.e., denied), passed a single position (for
getCurrentPosition) or cleared (for watchPosition).
Bug 874996 - Issue error events for geolocation provider errors