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

Closes #9607
Doing the current workaround as suggested in the original issue will result in the exact same event sequence, so I don't see a problem with this...

The only difference is that instead of doing:
```js
$rootScope.$on("$routeChangeStart", function (event, next, current) {
  if (next && next.secure) {
    event.preventDefault();
    $rootScope.$evalAsync(function() {
      $location.path('/c');
    });
  }
});
```

You would do this:
```js
$rootScope.$on("$routeChangeStart", function (event, next, current) {
  if (next && next.secure) {
    $location.path('/c');
  }
});
```