after much effort, graph tests pass again. all GraphElementData objects know what theory they come from now
dealt with json exceptions by chaining, rather than extending them in *LoadException. This way, only the higher-level load exceptions need to be caught by client code.