DepGraph: Add componentWillReceiveProps to conditionally reload nodes
DepGraph: Add componentWillReceiveProps to conditionally reload nodes

Before this commit, jumps to a different key did not trigger a node
reload.  That's because the only call to nodes() was in
componentDidMount [1], which is called after the component was
mounted, but not called after the properties change.  This commit adds
an additional check in componentWillReceiveProps [2] to notice those
property changes.

When all the new slugs are already loaded, we don't do anything
(because fetching nodes can be expensive and re-rendering the graph
can cause distracting positioning shifts.  We may want to add logic to
re-center on the jump-target node, but I haven't added that here.

When any of the new slugs are *not* already loaded, we clear the state
and start over with a new call to nodes().  This is a bit aggressive
and may result in dumping nodes which would still be useful in the new
graph, but the implementation is straightforward.  We can add caching
to expensive node-getters if we want to make this more performant.

[1]: https://facebook.github.io/react/docs/react-component.html#componentdidmount
[2]: https://facebook.github.io/react/docs/react-component.html#componentwillreceiveprops

wking/depviz,jbenet/depviz,jbenet/depviz,wking/depviz