Add `__setitem__` slicing

Building on #384 and #385, this PR allows slice syntax in a `DistArray`'s `__setitem__`.

The same restrictions apply:  `BlockMap`s and `NoDistMap`s only and slice-steps of size 1 only.
Agreed.