ERR: _shallow_copy should assert dtype
xref #13288 

```
In [2]: i = Index([0,'A'])

In [3]: i._shallow_copy([0])
Out[3]: Index([0], dtype='int64')
```

We should assert that we have a valid dtype in the constructed object (so should do this in `_simple_new` to avoid these guarantee violations)
