feat($location): Location change notifications can now be skipped

This adds a new method `notify` to `$location` that allows updating the
location without triggering `$locationChangeStart`/`$locationChangeSuccess`
events.

The method is chainable and must be called with a boolean parameter. Any
falsy value will disable the notification procedure and will block any
route update that may apply.

The skip flag will be reset after any digest cycle, so it must be set again
on any subsequent change if needed.

Example: `$location.path('/client/2').replace().notify(false);`

Closes #1699
Merge remote-tracking branch 'upstream/location-skip-notify'