fix($location): update internal url with browser url if changed outside of Angular

$browser keeps an internal representation of the browser's url, and although $browser.url()
would return the client's real current url, the $location service that was comparing that
url with $location's representation had no way of knowing when the url had been changed outside
of Angular.

This commit makes browser and location a little bit smarter by setting a flag inside of $browser
when it detects that a url changed outside of Angular, allowing $location to parse the new url
and update its own internal representation of the url (and react appropriately).

Fixes #6976