Refactor and validate

Modularized functions to make the graph directed (via dominator trees) and clean it (when scenarios are merged) extracted them from monolithic read_networkplan.  Also factored out map_edge_attributes to map the edge attrs from one graph to another (useful because we do a few graph operations where edge attr's are lost).  Updated tests accordingly.