[mc] Multiple .so support for region snapshots
The region snapshoting logic can handle a variable number of .so
files:
* add more informations to the snapshot regions,
* the type (heap, library/executable);
* the correspoding library/executable;
* the type of storage (dense/flat, chunked/sparse or privatised)
and the type-specific variables are defined in an enum
(variant/tagged enum).
* SMPI privatisation snapshot regions are stored as children of a
parent snapshot region
Limitation:
* we might want to use a more modular/extensible approach OO for the
snapshot region storage type instead of variant-based approach;
* SMPI can currently only handle privatisation for the local
variables of the executable so this is only supported in the MC as
well for this reason but otherwise the MC is ready to support the
SMPI privatisation of libraries.