Tweaks to model resolution

I rearranged some code to address to somewhat related issues:

1) Don't re-call `model` on a parent route in a redirect if
the parent model already resolved.

This causes this Ember.js test case to pass:

https://github.com/emberjs/ember.js/pull/2874

2) Make it possible to swap out the resolved model within afterModel

This is something that's been requested by @ghempton and @ebryn; after
a model has resolved, there are use cases where you might want to
perform some transformation on it that involves entirely swapping
the model rather than just setting properties on this. One way we
could have allowed for this would be to use the return value from
afterModel as the final resolved model that'll be passed to `setup`,
but this would awkwardly require that anyone who doesn't want to
swap out the resolved model would have to always return the
`resolvedModel` that was passed into `afterModel`, which seems like
crappy API.

So the more conservative approach taken in this PR is to allow
adventurous users to swap out the resolved model in
`transition.resolvedModels[routeName]`. This wasn't possible
before this PR as that value would have been clobbered
after resolving `afterModel`.