Adding some helpful methods for testing transitions

I've noticed several questions from others about how to use `willTransition` correctly, and in my own app I've had to write some fairly non-obvious code for inspecting `transition` objects within `willTransition` handlers. While documenting the `transition` object would help a bit, I think it would be preferable to define a higher-level API instead.

The kind of questions we'd want the user to easily answer would be:

* Does this transition leave the current route in place? At present the best way I know to check this is:

        var me = this.routeName;
        if (transition.handlerInfos.find(function(hi){ return hi.name == me;})){
          // Really leaving
        }

    This often comes up when you transitioning into a deeper child route while leaving the current route alone.

* If the current route will still be part of the destination, does its context change?

        var have = this.serialize(this.currentModel);
        if (Ember.keys(have).every(function(param) {
          return have[param] === transition.params[param];
        })) {
          console.log("identical context, skipping willTransition");
        }

This PR is a sketch of one possible API that would provide these features. It's not a complete solution yet, and it doesn't consider `queryParams`. But I wanted to get some feedback first.

Do people like this API? If yes, does this need to go behind a feature flag?

(I can see that getting the current dynamic params for the route with `serialize` is not the right way. It seems that doing it correctly may require a change to the router.js microlib so that it will expose the dynamic parameter names in the transition object. And we may also want to move these new methods directly onto the Transition object.)