Object datatypes
If type argument is MPI.OBJECT, buf should be an array of objects.
Allows to send fields of mixed primitive types, and fields from different objects, in one message.
Allows to send multidimensional arrays, because they are arrays of arrays (and arrays are effectively objects).