[SMPI] Make MPI_DATATYPE_NULL a non-null object
We're calling methods on the Datatype objects, such as
datatype->size(), especially in the replay component.
With MPI_DATATYPE_NULL being the nullptr, we'd have to
check every time whether or not a given object is
actually MPI_DATATYPE_NULL before using it.
Making MPI_DATATYPE_NULL a real object allows us to call methods
on this object that will be meaningful (for instance, size() returns 0)
and to avoid this constant checking.
Thanks to Michael Mercier for reporting this bug.