Added NoDupesGraph subclass of Graph:

  * add_node returns a Node, getting or creating it as needed
  * add_edges without first creating nodes
  * an order of magnitude or two speed improvement when
      adding edges to huge graphs (use dictionary for _nodes
      rather than seaching though a list).