Okay, that makes sense. So, here's what I think should change:

* Add a `swapped` method to `CompositeView`.
* Call it unconditionally from `SwappingRouter` after swapping in the new view.
* Trigger a `swapped` event from `CompositeView` when `swapped` is called.

Sound good?