Bug 874996 - Part 1 - Simplify handling of geolocation requests. r=jdm

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. r=jdm
Bug 884028 - Acquire lock before writing to terminal; r=ted

DONTBUILD (NPOTB)

--HG--
extra : rebase_source : 373c1fa5e47a2493970da0412788c55b9bdd9ef8