Added 2D canonical edge partitioner
Edge partitioner now partitions by canonical edge so all edges between two vertices (in either direction) will be sent to same machine.
Added initial groupEdges code. Still a prototype, I haven't figured out quite how it should all work yet.
groupEdges() now compiles. Still need some unit tests
Added a groupEdges and a groupEdgeTriplets method. For some reason the groupEdgeTriplets method isn't properly iterating through the set of edges and thus is returning the wrong result. groupEdges seems to be working.
Fixed groupEdgeTriplets - it now passes a basic unit test.

The problem was with the way the EdgeTripletRDD iterator worked. Calling
toList on it returned the last value repeatedly. Fixed by overriding
toList in the iterator.