can we add: `def reverse: Edge[N, E]` which swaps from and to. This will make it easier to reverse graphs to reuse the similarity code.