Revise update strategy of dp.nodes.add

Objective
------------

- Do not update if overwritting value is empty.

Detail
--------
Please consider the following case:
```
node_list = [{
  "path": "/path/0",
  "comment": "some comment"
}]
node = {
  "path":"/path/0",
  "comment": ""
}
nodes.add(node_list, node)
print(node_list)
```

I think comment "some comment" should not be overwrite with "" in this case.
However, this patch causes another problem for "children" and "parents" property,
i.e. `[]` is meaningful in this case (see changes in test code).

What do you think about it?