More flexible history management

@redonkulus @tindli @ptomasroos 

Implement option 3 in https://github.com/yahoo/flux-router-component/issues/31:
* separate hash-based routing into HistoryWithHash.js
* allow plugging in custom history management solution