Fix round-trip-ability of dynd string arrays and numpy object arrays with h5py-style vlen string dtype

This PR enables the following to work, by converting the string array into a numpy object dtype with h5py-style metadata indicating it should be treated as a variable-length string array.

```
In [3]: x = nd.array(['testing', 'one', 'two'])

In [4]: y = nd.as_numpy(x, allow_copy=True)

In [5]: z = nd.array(y)

In [6]: z
Out[6]: 
nd.array(["testing",     "one",     "two"],
         type="strided * string")

In [7]: y.dtype
Out[7]: dtype('O')

In [8]: y.dtype.metadata
Out[8]: mappingproxy({'vlen': <class 'str'>})
```