added data structures for directed edges with weights and for directed graphs
added a data structure from Robert Sedgewick for an index priority queue, since Java doesnt provide one
implemented Dijkstra's shortest path algorithm for directed graphs with non-negative weights