Feature/enhance distarray to array conversion

In this PR I implement the `__array_interface__` method on `DistArray` so that one can call `numpy.array(darr)` or `numpy.asarray(darr)`.  This is mostly just syntactic sugar for `tondarray()`, but it also allows us to do things like:

```
darr # a DistArray with shape (7, 9)
arr = numpy.ones((7, 9))

arr[...] = darr
```