DiGraph has been given a few more methods which will help it do its job
more easily. I am going to start writing Dijkstra's shortest path soon.
Am probably going to have to implement my own priority heaps which are
 going to have the decrease_key and increase_key properties because
the priority queues in STL are extremely limited in what they can and
cannot do.