From current draft .. referring ti pushState and replaceState ...
"
4. If the third argument is present, set the document's current address to the absolute URL that was found earlier in this algorithm.

Since this is neither a navigation of the browsing context nor a history traversal, it does not cause a hashchange event to be fired.
"
I believe that " this is not a navigation" also applies to popState (as this this cause applies to push push and replace state)

The changes to history.js bring statechange (event) in line with the spec.
Was too aggressive in "was_expected"
Merge remote-tracking branch 'remotes/rroesler/master'