Break navigation into fetchData / navigate steps

Every page view can define a fetchData method which returns a promise.
The routing layer passes fetchData a params hash indicating the state
of the page to which we're navigating. Once the promise returns, it
calls navigate with the same params. This is nice because we can always
fetch the appropriate data based on the params, and then the code in
navigate can assume it has all the data it needs.
Add slightly hacked jQuery to avoid SpacePen constructor workaround

There's a PR and issue filed for this on jQuery:
https://github.com/jquery/jquery/pull/1213

This just introduces a hacked version of jQuery to get the better
behavior now.