Add attribute parameter for Node and Edge to store arbitrary data.
Update add_edge in graph.py to take in a start node, end node, and an edge.  Remove directedgraph.py as directedness info is in edges.