delay pushingState onclick to give a chance to cancel for server routes...

cc @tmeasday, @zol.

Problem:
If we push a server route state onto the stack and then subsequently set
window.location = '/some/serverpath' and then hit the back button, the app never
loads again.

Solution:
Don't push server paths onto the stack.

How:
Delay calling pushState or setting location.hash until after the flush cycle.
This gives callers of Iron.Location.get() a chance to cancel the push by calling
the cancelUrlChange method on the state object like this:

var loc = Iron.Location.get();
loc.cancelUrlChange();