big makeover: Node and Edge classes are moved into their own files. reverse() function call now returns a new graph with new nodes, but sharing the data.