feat($location): allow to change location during $locationChangeStart

Closes #9607
This was added in https://github.com/angular/angular.js/commit/c49b8a2d - I guess the idea here is that we want to run a digest synchronously, unless the digest is already running, in which case we add it to the async queue of the current digest. But I can do the `return` in 842 anyone since this line is not inside that function...