Move type operations to another structure

Every type has free, print, check_constraints, ber_decoder, der_encoder,
xer_decoder, xer_encoder, uper_decoder, uper_encoder and outmost_tag
operations. We move them out to a separate structure asn_TYPE_operation_t.

Combined with previous logic simplification, these operations are based
on ASN.1 basic types, constructed types and string types. So we can
reduce the space occupied by asn_TYPE_descriptor_t variables.
diff --git a/skeletons/GeneralString.c b/skeletons/GeneralString.c
index 805adcb..cc2c292 100644
--- a/skeletons/GeneralString.c
+++ b/skeletons/GeneralString.c
@@ -12,9 +12,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (27 << 2)),	/* [UNIVERSAL 27] IMPLICIT ...*/
 	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))	/* ... OCTET STRING */
 };
-asn_TYPE_descriptor_t asn_DEF_GeneralString = {
-	"GeneralString",
-	"GeneralString",
+asn_TYPE_operation_t asn_OP_GeneralString = {
 	OCTET_STRING_free,
 	OCTET_STRING_print,         /* non-ascii string */
 	OCTET_STRING_compare,
@@ -37,7 +35,13 @@
 	OCTET_STRING_decode_uper,    /* Implemented in terms of OCTET STRING */
 	OCTET_STRING_encode_uper,
 #endif	/* ASN_DISABLE_PER_SUPPORT */
-	0, /* Use generic outmost tag fetcher */
+	0	/* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_GeneralString = {
+	"GeneralString",
+	"GeneralString",
+	&asn_OP_GeneralString,
+	asn_generic_unknown_constraint,
 	asn_DEF_GeneralString_tags,
 	sizeof(asn_DEF_GeneralString_tags)
 	  / sizeof(asn_DEF_GeneralString_tags[0]) - 1,