plugins exts CHANGE ext parsing isolated into a callback

Lots of refactoring and finishing up included.
diff --git a/src/schema_features.c b/src/schema_features.c
index f70968f..dca998e 100644
--- a/src/schema_features.c
+++ b/src/schema_features.c
@@ -310,7 +310,7 @@
 #define LYS_IFF_RP 0x08 /**< Additional, temporary, value of @ref ifftokens: ) */
 
 static LY_ERR
-lys_compile_iffeature(const struct ly_ctx *ctx, struct lysp_qname *qname, struct lysc_iffeature *iff)
+lys_compile_iffeature(const struct ly_ctx *ctx, const struct lysp_qname *qname, struct lysc_iffeature *iff)
 {
     LY_ERR rc = LY_SUCCESS;
     const char *c = qname->str;
@@ -501,7 +501,7 @@
 }
 
 LY_ERR
-lys_eval_iffeatures(const struct ly_ctx *ctx, struct lysp_qname *iffeatures, ly_bool *enabled)
+lys_eval_iffeatures(const struct ly_ctx *ctx, const struct lysp_qname *iffeatures, ly_bool *enabled)
 {
     LY_ERR ret;
     LY_ARRAY_COUNT_TYPE u;