Mostly finished reimplementing the directed graphs. Mostly went as exected,
but had to make the out iterator reference the undelying vertex types because
I can't translate between iterators and descriptors without a container. It's
a little overhead, but won't kill anything.
Add incidence and adjacency iterators for directed graphs to add interface
parity/symmetry with undirected graphs.
Changed the interface to the edge() test functions to simply return an
edge descriptor. These can be tested for null-ness, so we don't need a
pair with a bool.