[changed] make URLStore.push idempotent

If somebody’s component is observing some user
input its easy to start pushing the same url
into the store, this makes it so devs can kind
of treat `Router.transitionTo` like rendering,
nothing happens if nothing has changed.

Previously, you get a bunch of history entries
that don’t change UI as the user clicks the back
button.

closes #79