Configurable hydrator generator class

I'm having a use case where I'd like to use large parts of what the library provides, but I'd like to customize how the hydrator class looks with a custom hydrator generator. In order to do that I created this PR, which adds a bunch of interfaces and factories, so the Configuration class has a HydratorGeneratorFactory instance, which creates the hydrator generator.

This might be a bit heavy handed, since I could just use a closure instead of a factory class, but that's a matter of choice, so I'll leave that up to you, so just let me know if you'd like me to change this to use closures instead.