title: Why stateChangeStart event called twice?
body: <p>I use <code>$stateChangeStart</code> for check user when change state.
  This is my code</p>
  
  <pre><code>$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams, options) {
      if (!toState.data.require_authentication) {
          return;
      }
  
      // Because state change is called two times, to prevent infinite loop I remove is_authenticate for next re-check and return
      if (toState.data.is_authenticate) {
          toState.data.is_authenticate = false;
          return;
      }
  
      event.preventDefault();
  
      toState.data.is_authenticate = false;
  
      // Check validity of token
      authService.checkAuthToken(function(result, status) {
          if (result.fn.result.done) {
              toState.data.is_authenticate = true;
              //$state.go(toState, toParams, options);
              $state.go(toState, toParams);
          } else {
              $log.debug("AuthToken expire/wrong");
              storageService.reset();
              $state.go("page.login");
          }
          return;
      });
  
  });
  </code></pre>
  
  <p>With some console log I see that when $state.go is fired, for some reason <code>$stateChangeStart</code> is fired again, so I need to return out by a boolean params or I enter in an infinite loop...
  Why?</p>