Refactored to eliminate duplicated (apply (comp set union) ...).
Eliminated the incidental complexity of having GraphNodes and GraphEdges take additional fields other than an id and the graph. Now they just take id, graph, and metadata, and use the fields of the graph to replce the (redundant) fields they used to have.