message: Removed navigation data mutation
diff: @@ -49,7 +49,7 @@ class StateNavigator {
  return !(<StateNavigator> stateInfos).stateHandler;
  };
  - private createStateContext(state: State, data: any, url: string, asyncData: any, history: boolean): StateContext {
  + private createStateContext(state: State, data: any, crumbs: Crumb[], url: string, asyncData: any, history: boolean): StateContext {
  var stateContext = new StateContext();
  stateContext.oldState = this.stateContext.state;
  stateContext.oldData = this.stateContext.data;
  @@ -59,8 +59,7 @@ class StateNavigator {
  stateContext.asyncData = asyncData;
  stateContext.title = state.title;
  stateContext.history = history;
  - stateContext.crumbs = data[state.crumbTrailKey];
  - delete data[state.crumbTrailKey];
  + stateContext.crumbs = crumbs;
  stateContext.data = data;
  stateContext.nextCrumb = new Crumb(data, state, url, this.stateHandler.getLink(state, data), false);
  stateContext.previousState = null;
  @@ -122,13 +121,14 @@ class StateNavigator {
  return;
  var oldUrl = this.stateContext.url;
  var { state, data } = this.stateHandler.parseLink(url);
  + var { [state.crumbTrailKey]: crumbs, ...crumblessData } = data;
  for (var id in this.onBeforeNavigateCache.handlers) {
  var handler = this.onBeforeNavigateCache.handlers[id];
  - if (oldUrl !== this.stateContext.url || !handler(state, data, url, history))
  + if (oldUrl !== this.stateContext.url || !handler(state, crumblessData, url, history))
  return;
  }
  var navigateContinuation = (asyncData?: any) => {
  - var stateContext = this.createStateContext(state, data, url, asyncData, history);
  + var stateContext = this.createStateContext(state, crumblessData, crumbs, url, asyncData, history);
  if (oldUrl === this.stateContext.url) {
  suspendNavigation(stateContext, () => {
  if (oldUrl === this.stateContext.url)
  @@ -138,12 +138,12 @@ class StateNavigator {
  };
  var unloadContinuation = () => {
  if (oldUrl === this.stateContext.url)
  - state.navigating(data, url, navigateContinuation, history);
  + state.navigating(crumblessData, url, navigateContinuation, history);
  };
  if (this.stateContext.state)
  - this.stateContext.state.unloading(state, data, url, unloadContinuation, history);
  + this.stateContext.state.unloading(state, crumblessData, url, unloadContinuation, history);
  else
  - state.navigating(data, url, navigateContinuation, history);
  + state.navigating(crumblessData, url, navigateContinuation, history);
  }
  private resumeNavigation(stateContext: StateContext, historyAction: 'add' | 'replace' | 'none') {
  