Extracts transition by intent into a separate function

This is done to work around V8 (it cannot optimize functions with try
blocks).

Comparison from a real app:

Before:

![route-transition-by-intent-deopt](https://cloud.githubusercontent.com/assets/1131196/4174310/033815fe-3586-11e4-8bef-67f2410baa7a.png)

After:

![route-transition-by-intent-opt](https://cloud.githubusercontent.com/assets/1131196/4174311/11e30640-3586-11e4-959c-9218bd5d7437.png)