Update HistoryImpl to use modern browser standards

Removes all old history implementations. Especially the timer
implementations caused many headaches on mobile.
Instead of setting window.onhashchange directly this uses
window.addListener instead, unfortunately this does not work with
IE8 (window.attachEvent does not call our listener on programatic hash
updates),so we end up rebinding anyway. This implementation should be
very easy to update once we drop IE8 support.

Change-Id: Idd4b25d11f36402d6fa4737d6d5ec0ed98b15fca
27 files changed