Dict initialization of DataFrame makes useless copy
#### Code Sample, a copy-pastable example if possible

```python
import numpy as np
import pandas as pd

values = np.arange(10, dtype=np.int32)
df1 = pd.DataFrame(values, columns=["foo"])
assert df1.values.base is values

df2 = pd.DataFrame(dict(foo=values))
# This assertion fails. It shouldn't.
# df1 and df2 should be equivalent.
assert df2.values.base is values
```
#### Problem description

Dict initialization shouldn't copy input ndarrays. The problem lies in internals.py _stack_arrays, which unconditionally calls np.asarray on input numpy arrays, copying them.

#### Expected Output

The assertion should not fail.

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

<details>

INSTALLED VERSIONS
------------------
commit: None
python: 3.4.3.final.0
python-bits: 64
OS: Linux
OS-release: 4.4.0-98-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.21.0
pytest: 3.2.5
pip: 9.0.1
setuptools: 38.2.1
Cython: 0.27.3
numpy: 1.13.3
scipy: None
pyarrow: 0.7.1
xarray: 0.10.0
IPython: 6.2.1
sphinx: None
patsy: None
dateutil: 2.6.1
pytz: 2017.3
blosc: None
bottleneck: None
tables: 3.4.2
numexpr: 2.6.4
feather: None
matplotlib: None
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: 4.2.1
html5lib: 0.999
sqlalchemy: 0.8.4
pymysql: None
psycopg2: None
jinja2: None
s3fs: 0.1.2
fastparquet: None
pandas_gbq: None
pandas_datareader: None

</details>
