Added support to register custom serializers, fixes #2464

We now support two possible was to register a custom serializer.

A user can either `config.UseSerialization(type of definition)` or  `config.UseSerialization(type of serializerImplementation)`

There are breaking changes but those are on purpose since the API was broken and unusable from an external consumer.
Which btw, IMO it doesn't make sense since it is an internal class