Allow string-valued channels

...not that these are properly dealt with yet in the type system, but
still.
ViewGraph.replaceNode()

which is now used instead of the old Node.setName() when editing a node
name. This makes the semantics of this name change much easier - before,
I was partially destroying and rebuilding the Node anyways, and it's
much easier to keep track of what happens this way. As a side benefit,
this also prevents awkward this._graph = graph storage on Node.