Allow non-pjax page updates.

Extract transition functionality from push.js into a new file, transitions.js.
Expose a global function, similar to PUSH named TRANSITION used to transition
from one page/view to another without dictating how the new markup is sourced.

This allows for Ratchet style page transitions when rendering client side.

I'll add comments to the diff shortly, highlighting some of the changes I've made.
Then I vote we leave it as-is (introducing a new `TRANSITION` global). Can't solve everything in this one commit.

I'm happy to tackle to work of moving Ratchet's code into a single `Ratchet` module. Then we'll be able to write tests for Ratchet's JS.