data tree REFACTOR inline access functions, cleanup includes

Also move LYD walk functions to tree_data.h removes requirement to
include tree_data.h in tree.h. tree_data.h now includes tree_schema.h to
allow for inlining. so now it's:

  tree                         for #include "tree.h"
  tree->tree_schema            for #include "tree_schema.h"
  tree->tree_schema->tree_data for #include "tree_data.h"

which better represents the organizational dependencies than what came
before:

  [tree_data]->tree              for #include "tree.h"
  [tree_data]->tree->tree_schema for #include "tree_schema.h"
  tree_data->tree                for #include "tree_data.h"
diff --git a/src/tree_data_hash.c b/src/tree_data_hash.c
index 921a1a0..c64e281 100644
--- a/src/tree_data_hash.c
+++ b/src/tree_data_hash.c
@@ -26,9 +26,9 @@
 #include "tree_schema.h"
 
 static void
-lyd_hash_keyless_list_dfs(struct lyd_node *child, uint32_t *hash)
+lyd_hash_keyless_list_dfs(const struct lyd_node *child, uint32_t *hash)
 {
-    struct lyd_node *iter;
+    const struct lyd_node *iter;
 
     LY_LIST_FOR(child, iter) {
         switch (iter->schema->nodetype) {