Allow callable class names

To provide an easy way to customise the class used based on contextual data I've updated the `$className` variable to be either a `string` or `callable`. A shared method is used between the existing hydrators to return the hydratable class name.
can you add a test case for when the callable is in array format? (`array($object, 'methodName')`?