Implement retreat and advance operations. Still needs work

- add find_min_out_edges() function
- Make random graph construction more specific
- Change some typedefs (only need out_edge_iterator) and add others
- Also add some safety checks