[PATCH 1/5] Enhance slurm parser to prepare layouts conf files management

Current slurm parser is mostly dedicated to manage key=value entries in a
configuration file, providing the capability to manage more complex
configuration lines like "key=value attr1=val1 attr2=val2 ..." through the
implementation of custom handlers.

However, custom handlers often had to rewrite their own parsing logic in
order to handle the various subcomponents/attributes.

This commit enhances the parsing logic in order to ease the management of
complex lines using nested parsing options definitions, automatic expansions of
array-like attributes and automatic merges of related lines.

These enhancements are the basis of the layouts configurations parsing logic

(Adapted for slurm-14.11 by Matthieu Hautreux <matthieu.hautreux@cea.fr>)
[PATCH 2/5] Enhance xtree logic for layouts management

Apply freefunc on the node and no longer its internal data in xtree_free
Add XTREE_GROWING xtree_walk target to ease building a tree adding childs
while walking it

(Adapted for slurm-14.11 by Matthieu Hautreux <matthieu.hautreux@cea.fr>)
[PATCH 3/5] Add Layouts= conf pragma support in slurm.conf for layouts management

This new pragma will be used to define the list of layouts to load at startup.
It will consist of comma separated values of layouts type and optional names,
respecting the following pattern : Layouts=layout_type[/layout_name][,...]
In case the name would not be defined, "default" would be assumed.

(Adapted for slurm-14.11 by Matthieu Hautreux <matthieu.hautreux@cea.fr>)
[PATCH 4/5] Introduce layouts core primitives

This commit introduces the entity, layout and layouts manager related structures
corresponding to the core of the layouts logic.

The layouts manager is responsible for initializing and loading the layouts
specified in the slurm.conf "Layouts=" pragma retrieved using
slurm_get_layouts().

(Adapted for slurm-14.11 by Matthieu Hautreux <matthieu.hautreux@cea.fr>)
[PATCH 5/5] Integrate the layouts framework into the controller startup stage

With this commit, the slurm controller will now initialize the configured
layouts and parse their configuration files at startup.

Note that even if no layouts were configured, a "base" layout is
automatically built in slurm-layouts_load_config(). This "base" layout is
containing every nodes defined in the system, linked together as a flat tree.

(Adapted for slurm-14.11 by Matthieu Hautreux <matthieu.hautreux@cea.fr>)