Fix bugs if only one process owns the global data.

Now it works for the following case:
```python
# matrix size
ns = 5

if rank == 0:
    A = np.random.standard_normal((ns, ns)).astype(np.float64)
else:
    A = None

dA = core.DistributedMatrix.from_global_array(A, rank=0)
```