Split Graph and DiGraph

* Made another class `DiGraph`, which uses a networkx `MultiDiGraph` object, rather than a `MultiGraph` object.
* Fix some issues with the tests for `save_json()`
* Add a `networkx_graph()` method, which makes a deep copy of the underlying networkx graph.
* Add some documentation for the JSON representation and the filesystem example, per Andrew's request.