More flexible history management

@redonkulus @mridgway @tindli @ptomasroos 
cc:/ @renatoi 

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
Not the window object.