D3 and L-Systems with Redux and StateReflector

The syncing is two way, that is, changes to the state of the controls are
reflected into the URL Fragment, and changes to the fragment are reflected
into the state of the controls, so every change give you a permalink to
that state, and browser history navigation works.

The StateReflector is extraced from this
code from the Skia Infrastructure codebase. The URL Fragment will
only contain information that's required, this is, if a value in the state
is unchanged from the default or initial value, then that value won't
appear in the URL Fragment.

The pairing with Redux makes this much nicer. In all of our (Skia Infra) current code
we don't use Redux, and so for StateReflector to work it needs to monitor
the internal state of the page which is does using a 100ms timer.
While the overhead is very low, having a non-polling solution is
obviously better.

The StateReflector code is also modified from the original so that it
store the state in the URL Fragment, while the original code stores the
state in the URL Query. It's probably worth making that a configuration
option to stateReflector.

If StateReflector looks useful to anyone let me know in the comments
and I'll stand up a repo and port the tests over too.