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.