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.
this should end with "feature"