Uses for a graph:

1. Create a graph from RDF input, manipulate or evaluate it, and output it as
  serialized RDF (always detached) [NO USE CASE]
2. Create a graph from RDF input, optionally manipulate it with other data from
  the store or external RDF and store it (start detached, then convert keys;
  or, start attached)
3. Retrieve a graph from the store, optionally manipulate it, and output it as
  serialized RDF (start attached, then detach)
4. Retrieve a graph from the store, manipulate it, and put the changed graph
  back in the store (always attached)

Initially we might try to render the graph read-only when detached; this
avoids implementing more complex operations such as add, remove and booleans.