BUG: various categorical fixes (GH8626)

BUG: coerce Categorical in record array creation (GH8626)
BUG: Categorical not created properly with to_frame() from Series (GH8626)
BUG: handle astype with passed pd.Categorical (GH8626)

closes #8626 
As Categorical is somewhat the ndarray with category dtype, this seems a bit like doing
```
df.astype(np.ndarray)
```

which seems strange.

But I actually tried this, and this also does not fail but converts all values to object. Is this intended? Or also a bug/case that should raise?