Redefined Edge interfaces to separate the logic of how different sets of
vertices are handled (directed vs undirected) from what those sets are
(hyper vs standard). * NOT FINISHED YET *
Finished separating things out