History with bookmarks

This is quite a big change, this PR for review and comment.

I found the n levels of indirection with core.async too confusing. 

Now data gets stored in the app-model as before, but clicks on the table(s) use the google history stuff to add a token to the URL, there is a listener on this history object which creates a map of all the selected ids and drops it onto a core.async channel. This channel is then multiplexed out and every table has a go-loop which listens to those history objects and makes a request to the back end.

currently the ajax listeners are dumb and always make requests, even if they don't have all their data, which leads to 404s, but this isn't a problem for the moment. I want to investigate whether a pub/sub model might work better than a plain mult.

 Selection works if you click, but and if you (re)load a bookmark, but the rows aren't highlighted (yet) - the data is loaded tho.

Also, some of the history stuff is in main.cljs and should move into history.cljs.