Starting on the generic type serializers and deserializers

These are discoverable at runtime via annotations