A generic double linked directed graph where edges can carry information optimized for stepping through.
Handles both globally unique NodeKeys and locally unique NodeKeys depending on options. EdgeKeys are generated automatically and are locally unique.