Change pandas to never let objects share `_data`, create views instead
Closes Issue #11814 

Several pandas operations create objects that share `_data` objects. In particular, all of the following result in `df_new`s and `df` sharing the same `_data` (i.e. `df_new._data is df._data` returns `True`). 

```
df = DataFrame({'col1':[0,1,2], 'col2':[2,3,4]})
df_new = DataFrame(df)
df_new1 = df.loc[:,:]
df_new2 = df.iloc[:,:]
```

Needed for PR #11500 

xref #11970 

this idea will be incorporated there.

If you want to update before then (as this might take a while), feel free to reopen.
