(1) added support of nested/composite field. (2) added support of @Serializer annotation for entity that allows users to explicitly specify (custom) Serializer implementation. Otherwise, we'll just simply infer the Serializer type based on field's Java ty