Extend AdjacencyListEditableGraph by Graph and EditableGraph
Define edge protocols

There are functions that either receive edges as input or produce edges
as output. Therefore I think it will be less restricting to define a
protocol that should be satisfied by the objects representing edges,
rather than saying edges are vectors and you have to deal with it.