Option to disable decoding of tags not commonly used to reduce object code (#74)

Disables UUID, Regex, MIME, B64, B64URL. They can still be decoded if they are untagged strings.

Co-authored-by: Laurence Lundblade <lgl@securitytheory.com>
diff --git a/src/qcbor_decode.c b/src/qcbor_decode.c
index fc9cf2b..ebcbc97 100644
--- a/src/qcbor_decode.c
+++ b/src/qcbor_decode.c
@@ -2099,6 +2099,7 @@
 #endif /* QCBOR_CONFIG_DISABLE_EXP_AND_MANTISSA */
 
 
+#ifndef QCBOR_DISABLE_UNCOMMON_TAGS
 /**
  * @brief Decode the MIME type tag
  *
@@ -2120,6 +2121,7 @@
 
    return QCBOR_SUCCESS;
 }
+#endif /* QCBOR_DISABLE_UNCOMMON_TAGS */
 
 
 /**
@@ -2142,10 +2144,12 @@
    {CBOR_TAG_NEG_BIGNUM,    QCBOR_TYPE_NEGBIGNUM | IS_BYTE_STRING_BIT},
    {CBOR_TAG_CBOR,          QBCOR_TYPE_WRAPPED_CBOR | IS_BYTE_STRING_BIT},
    {CBOR_TAG_URI,           QCBOR_TYPE_URI},
+#ifndef QCBOR_DISABLE_UNCOMMON_TAGS
    {CBOR_TAG_B64URL,        QCBOR_TYPE_BASE64URL},
    {CBOR_TAG_B64,           QCBOR_TYPE_BASE64},
    {CBOR_TAG_REGEX,         QCBOR_TYPE_REGEX},
    {CBOR_TAG_BIN_UUID,      QCBOR_TYPE_UUID | IS_BYTE_STRING_BIT},
+#endif /* QCBOR_DISABLE_UNCOMMON_TAGS */
    {CBOR_TAG_CBOR_SEQUENCE, QBCOR_TYPE_WRAPPED_CBOR_SEQUENCE | IS_BYTE_STRING_BIT},
    {CBOR_TAG_INVALID16,     QCBOR_TYPE_NONE}
 };
@@ -2254,10 +2258,11 @@
                 uTagToProcess == CBOR_TAG_BIGFLOAT) {
          uReturn = QCBORDecode_MantissaAndExponent(pMe, pDecodedItem);
 #endif /* QCBOR_CONFIG_DISABLE_EXP_AND_MANTISSA */
-
+#ifndef QCBOR_DISABLE_UNCOMMON_TAGS
       } else if(uTagToProcess == CBOR_TAG_MIME ||
                 uTagToProcess == CBOR_TAG_BINARY_MIME) {
          uReturn = DecodeMIME(pDecodedItem);
+#endif /* QCBOR_DISABLE_UNCOMMON_TAGS */
 
       } else {
          /* See if it is a pass-through byte/text string tag; process if so */