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/CMakeLists.txt b/CMakeLists.txt
index 86a2abe..194babd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -94,6 +94,7 @@
     src/plugins_types/instanceid_keys.c
     src/plugins_types/integer.c
     src/plugins_types/leafref.c
+    src/plugins_types/lyds_tree.c
     src/plugins_types/string.c
     src/plugins_types/union.c
     src/plugins_types/ipv4_address.c
@@ -134,6 +135,7 @@
     src/schema_compile_node.c
     src/schema_compile_amend.c
     src/schema_features.c
+    src/tree_data_sorted.c
     src/tree_schema.c
     src/tree_schema_free.c
     src/tree_schema_common.c