Enable graph creators to assign individual edge orientations

This fixes #27. See the discussion there for a more detailed explanation. The newly added unit tests cover every possible configuration, so we can be reasonably sure that it functions correctly.