Rework ARRAYs, replacing label string with typed key, declaring KEY and VALUE
independently.
Implement dna.helper.argv array using key of type unsigned short.
Implement mdp.iftype.<interfacetype>.tick_ms using key of type short for the
interface type code.
The dna.helper.argv validation function now sorts the array in numerical order
of labels using qsort(3).
Add LABELLEN argument to ARRAY schema macros, to control the size of the
label[] string (was fixed at 41 chars before).
Add optional validator functions for STRUCT and ARRAY parsing. Tighten up
logic for parsing STRUCTs and ARRAYs and the result flags. Improve
documentation in block comments. Add CFUNSUPPORTED result flag.
Refactor ARRAY_xxx() schema declaration macros to fix problem in ARRAY_STRING().
Add dna.helper.executable, dna.helper.argv and server.chdir to config schema.
Replace ARRAY() macro with ARRAY_ATOM(), ARRAY_STRING(), ARRAY_NODE() and
ARRAY_STRUCT().
Change parse function return value to flag bits, add CFEMPTY, rename CFMISSING
to CFINCOMPLETE, improve logic around mandatory struct items.
Renamed struct config_node to struct cf_om_node.
Refactor to make opt_parsing() functions simpler for ATOM -- no need to check
for missing text or unsupported child nodes, or log parse failures.
Introduce NODE option which passes whole config_node struct to parsing
function.