Restore :src to Edge

Turns out I do need it, because it ensures uniqueness
of the edge, and also uniqueness of a Segment derived from the
edge. It also allows us to make segments directionless, which
is handy for reversing FlatGraphs.

I am also trying out protocols for some of the essential
functionality, starting with reversing an edge.

Further, I decided to start adding both the forward and
reverse edges to :marked, so that I don't have to resort to
silly tricks to allow for reversing a graph and still finding
marked edges.