This patch stores the current focused node in the URL hash, so you can
link to a specific stack.
It also implements the back/forward buttons using the `pushState()` API.
Only the merged/unmerged setting and the focused node ID are stored
right now, but the type visibility settings should be added too as those
are necessary in order to show the focused node.
The hash is read on load, elsewhere the history API is
used—`pushState()` and `onpopstate` are a little easier to deal with
than `hash` and `onhashchange`. (onpopstate is _only_ triggered by user
action for example so we don't have to check if we just pushState()d.)
TODO:
- [ ] add type visibility settings to URL hash
- [ ] when pressing Back repeatedly, the rendered state may get out of
date because no new animations are started for 500ms or so after
another started. Should instead cancel ongoing animations and switch to
the new one.
- Fixes the height of the graph in FF
For some reason `height: calc(100% - 66px)` does something totally
different than `height: 100%`, but with `100vh` the behaviour is the
same either way. This seems like a FF CSS bug maybe…
- Use floating + margins instead of absolute positions for top bar
controls
Default button and input sizes are different across browsers and OSes,
by using floats + margins the positioning adapts to sizes instead of
having things drawn on top of each other.