Graph Edges And Tests

Edges come in two flavours: Simple and Directed. Simple
edges are bidirectional and weighted whereas Directed
edges are either directed in one direction or
bidirectional.
Graph Utility. Simple Graphs with Simple Edges

Graphs are immutable collections of paramterized Vertices (V) and
Edges (E extends Edge<V>).

Simple Graphs contain at most one edge between a pair of vertices
and do not allow loops (an edge v->v). Simple Graphs are created
using a SimpleGraph.Builder.
Simple Weighted Graphs

SimpleGraphs now also provide a WeightedBuilder to create simple weighted
graphs. Additionalally, a hashCode method was added to the Edge classes
to reflect the overriden equal method.
Directed Simple Graphs

SimpleGraphs have a DirectedBuilder which enables the creation
of Directed and BiDirectional edges.

BUGFIX: addEdge(V,V) does not allow the source and destination
to be the same.

GraphBuilderTests now share a common abstract test class to improve
readability and ease of modifcation
Test Suite for SimpleGraph Builders
Weighted Directed Graphs

SimpleGraph provides a WeightedDirectedGraphBuilder to build
the weighted directed graphs.