libyang FEATURE sorting of data nodes

1. Plugin type 'lyds_tree' is integrated. Used in metadata and it is
internal, which is distinguished by the unset print callback.
Internal metadata must not be printed.
2. Leaf-list and list data instances are now automatically sorted.
3. Both the explicit and implicit YANG statement 'ordered-by system'
will cause the nodes to be ordered.
4. The first instance of the list or leaf-list of node contain
new metadata named 'lyds_tree'.
5. Data nodes are sorted only if their data types have
callback 'sort' set.
6. Sorting can be turned off so far only by adding the 'ordered-by user'
statement to the YANG model.
7. If the sort fails for some reason, the node is still inserted
as the last instance. A warning message informs about this situation.
8. The time required for sorting should be relatively small thanks to
the Red-black tree implementation.
9. Memory requirements will now increase by 40 bytes per list/leaf-list
data node, plus metadata structure overhead.
10. New internal lyds_tree plugin type.
diff --git a/src/printer_lyb.c b/src/printer_lyb.c
index 110cb29..de6ae97 100644
--- a/src/printer_lyb.c
+++ b/src/printer_lyb.c
@@ -765,6 +765,9 @@
         ++count;
     }
     for (iter = node->meta; iter; iter = iter->next) {
+        if (!lyd_metadata_should_print(iter)) {
+            continue;
+        }
         if (count == UINT8_MAX) {
             LOGERR(lybctx->lybctx->ctx, LY_EINT, "Maximum supported number of data node metadata is %u.", UINT8_MAX);
             return LY_EINT;
@@ -784,6 +787,10 @@
 
     /* write all the node metadata */
     LY_LIST_FOR(node->meta, iter) {
+        if (!lyd_metadata_should_print(iter)) {
+            continue;
+        }
+
         /* model */
         LY_CHECK_RET(lyb_print_model(out, iter->annotation->module, 0, lybctx->lybctx));