GraphNavigatorInterface

Several visitor classes depend on the `JMS\Serializer\GraphNavigator` class, which is a `final` class. Switching the signatures of these visitors so that they to depend on a `GraphNavigatorInterface` instead of the class itself, allows more flexibility, and makes the `GraphNavigator` component replaceable.