Support setitem syntax in MPIShared
This PR adds support for using square-bracket slice assignment to the MPIShared class. This syntax is still a collective operation and may be slightly slower than using the set() method since it must first do and Allreduce to determine which process has a data input which is not None.