Add immutable directed graph.

Still need to figure out the most generative testing harness for these.