History API polyfill

Simplify pushState's save of state object (and add desired url).
IE8/9 won't fire nonstandard events, but we can use jQuery for that
easily.
Next: work without jQuery...