Working locally, changes __str__ method on WeightedDigraph

 - uses same format in WeightedDigraph.__str__ as the str method
   does in Digraph class
Updates WeightedDigraph __init__, fixes addEdge

 - updates WeightedDigraph.__init__ to inherit self.nodes and
   self.edges from Digraph (instead of storing 2 copies of nodes
   and edges)
 - fixes addEdge method, to not add duplicate destinations within
   a given source