Move History API out to a mixin

Also add support for hashchange router.
Force HashChangeRouterEnvironment if now window.history is found