core: abstract out reorder_children(), needed when merging modifies the list of children
core: reorder children in merge_useless_child() as well

When ignore_keep_structure is enabled, intermediate level can disappear
between parent and child, making the new child complete_cpuset smaller,
causing the child list to require a reorder just like in remove_ignored().
tests/hwloc/linux: tweak 16em64t-4s2ca2c-cpusetreorder and check it with --merge as well

This makes sure that children get reordered by complete_cpuset
when intermediate objects are removed because of ignore_keep_structure.
core: move object freeing routines together
core: move restrict routines together
core: rename remove/ignore internal functions

remove_ignored() -> ignore_type_always()
merge_useless_child() -> ignore_type_keep_structure()
core: improve debug cpuset checks

Slightly improve the code added in 45c94c336d828210b2e7fe8cfd6c528066567bc5
tests/hwloc_insert_misc: more inserts, with misc inside misc
BGQ: add a single NUMA node instead of putting the memory in the root object
synthetic: always enforce a NUMA level

Insert a NUMA level if none were given.
Use arity of one in the parent to avoid modifying the given synthetic topology.
xml: some code factorization to ease upcoming commits
tests: fix missing nodesets/cpusets in test-hwloc-compress-dir files
xml: check the sanity of cpusets/nodesets vs type and parents

* only I/O and misc may have no cpuset
* obj cannot have cpuset/nodeset unless the parent has one
* root must have a cpuset
xml: add a NUMA node if the input XML doesn't provide one

XMLs from hwloc < 2.0 may contain no numa node and nodesets, enforce one

hwloc_xml_backend_data_s (shared by XML plugins) is modified but the field
that are changed/moved are only touched by the core, so no ABI break here.

tests/hwloc/hwloc_insert_misc.c temporarily uses a synthetic topology
until the core adds missing NUMA node as well (otherwise reimporting
from XML will get an additional NUMA node).
xml: add default allowed/online cpu/nodesets if missing
core: insert a NUMA node P#0 at the end of discovery if no NUMA node exists yet

And move the root memory there.

Revert the temporary change in tests/hwloc/hwloc_insert_misc.c
added 2 commits ago, not needed anymore, both core and XML add
missing NUMA nodes when needed.
core: don't allow ignoring of NUMA nodes

lstopo cannot work-around it since ignoring intermediate boxes
but still showing their contents is much harder.
Hopefully, we assume people will unlikely want to remove NUMA nodes
from the graphical output
(while removing PUs can be useful on non-hyperthreaded machines).
debug: check there is one and only one NUMA level
core: NUMA level priority is as high as PU, and higher than Machine now

Not sure it actually matters since NUMA nodes cannot be ignored anymore,
but still better for consistency.
core: Remove add_default_object_sets() now that we're always NUMA

We always have nodeset before calling this.