Use history.pushState instead of location.hash

No jerkiness.