added a GraphNavigatorInterface to allow replacing the GraphNavigator and make the library more extensible.