DataFrame constructor passing DataFrame for full copying references original DataFrame instead of being its own new object
#### Code Sample, a copy-pastable example if possible

```python
import pandas as pd
a = pd.DataFrame([[1,2,3,4], [10,20,30,40]])
b = pd.DataFrame(a)
a.loc[0,2] = 888
print(b) # this... should not have 888 in it.
a is b  # yields False, which does not appear to be the case
```
#### Problem description

I hope we all agree that the constructor should copy the data and structure of the DataFrame a into a new DataFrame called b.

#### Expected Output

It is expected that b.loc[0,2] != 888 and b.loc[0,2] == 3.

#### Output of ``pd.show_versions()``

<details>
INSTALLED VERSIONS
------------------
commit: None
python: 3.6.8.final.0
python-bits: 64
OS: Darwin
OS-release: 18.2.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.24.2
</details>
