Update GeolocationController to call startUpdating() / stopUpdating() only if needed

Update GeolocationController to call startUpdating() / stopUpdating() only if needed
as some clients (e.g. the geolocation mock client) do not accept consecutive calls
to either of these methods.

This was done by introducing startUpdatingIfNeeded() / stopUpdatingIfNeeded() private
methods which update a boolean flag to avoid useless calls.

This fixes a possible assertion hit in Debug.

R=jochen
BUG=310326

Review URL: https://codereview.chromium.org/37863002

git-svn-id: svn://svn.chromium.org/blink/trunk@160480 bbb929c8-8fbe-4397-9dbb-9b2b20218538