Defined through EdgeSetPathEq, using the RPath definition from util.v

Took the definition of RPath (and the two variations, RPath', RPath'')
and moved forward, using this to define EdgePaths and EdgeEqPaths.

Changed some naming conventions slightly. PredEdges are now
StrandEdges. They're the edges that make a strand. This seemed more
direct to their meaning. Also, before I had a somewhat confusing way of
labeling the relations that also included membership in a specific set
(I had tried, for example, CommEdge' and CommEdge_). These are now
[EdgeType]SetEdge (e.g. CommSetEdge), thus making them very explicit
and self explanatory. I also changed SSEdge (Strand Space Edge) to
XEdge (as in "x" the variable, as in *either* a comm or strand edge).
StrandSpaceEdge seems like the most accurate, but is painfully lengthy
(can you imagine StrandSpaceSetEdgeEq?). SSEdge is what I was using,
which when combined with SetEdges make SSSetEdge… which is painful. I
guess I could do GraphEdge, GEdge, CSEdge (Comm [or] Strand Edge?), or
stick with SSEdge and just deal with SSSetEdge… All of these feel
varyingly gross… which is driving me nuts. Oh well, 'XEdge' it is for
this push.