[mc] Initalize the SMPI options before creating the processes

This is necessary because the MC code handling the creation of
processes needs to be aware of the SMPI options. This look like a huge
mix of the different layers (SMPI, MC, SIMIX).
Make the cast explicit in smpi_process_index_of_smx_process()

When getting the SMPI process data from a SIMIX process a cast is done
from void* to smpi_process_data_t. Make it explicit.
[mc] Fix smpi_process_index_of_smx_process()

The SMPI process ID is simply the SIMIX PID - 1. The previous solution
(getting the data field of the SIMIX process) was mostly correct but
the 'data' field was not initally set to the SMPI process data
structure (but was NULL).
Merge branch 'mc'
[smpi] Allow zero-sized custom datatypes with MPI_Type_contiguous()

MPI_Type_contiguous(0, oldtype, newtype) is valid in MPI but SMPI does
not accept it as the resulting datatype is considered invalid: SMPI
does not accept datatypes with size of 0. Fix the datatype validation
function in order to accept this.

This type of datatype is used in bcastzerotype.

bcast-NTSL is fixed as well (division by zero).
Avoid tautological-compare

Clang complains about tautological compare: it seems an unsigned
integer is always non-negative.
[smpi] Use SMPI namespace for some public variables/functions
[smpi] Simplify code for SMPI privatisation
[smpi] Change parallel arrays into array of structs
model-checker : disable smpi bench timer if MC enabled
[smpi] Fix typo when fixing memory allocation
[smpi] Fix typo when fixing memory allocation (again)
[smpi] Restore privatisation mapping smpi_execute()

smpi_execute() calls a the host_execution simcall which might generate
a process switch. After this, we might not have the correct SMPI
privatisation region: we have to rectore it. The correct privatisation
mapping is needed by some code between smpi_bench_end() and
smpi_bench_begin().
have replay use correct algorithm selection logic. Some of them did use only default algos.
update replay tesh
warning --
avoid warnings (and errors) without debug enabled
don't use calloc for these buffers
Initializing them to 0 made them use physical memory, while letting them uninitialized, (and unused as in replay we may not need them) puts them in virtual memory
leak --
Add a little hack to have replay + SMP collectives
The problem was that having replay active did make SMPI skip all buffer copies.
But in this function we actually need the data exchanged between processes.
So we temporary tell SimGrid it is not replaying, here.