What is the relationship between BGL's edge_descriptor and edge_iterator?