Getting the ids to be properly unique is a slow call to do on the file. So I have used a chain as a buffer and goroutine to populate it. This way whenever we want to have a unique id we have 1 waiting in memory and use the power of concurrancy to keep the buffer full.

(well I think I've been clever anyway)
Tests for edgetype methods
GraphEdge and GraphEdgeType are different things so I am putting them into different files
graph edge has just the graph edge in it
Add in basic tests for the edge types