Inconsistent dtype metadata leads to wrong Parquet column type
#### Code Sample, a copy-pastable example if possible

Run the following code with Pandas 0.24.x and PyArrow 0.12.0:

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

df_1 = pd.DataFrame({'col': [None, None, None]})
df_1.col = df_1.col.astype(np.unicode_)
df_1.to_parquet('right.parq', engine='pyarrow')

series = pd.Series([None, None, None], dtype=np.unicode_)
df_2 = pd.DataFrame({'col': series})
df_2.to_parquet('wrong.parq', engine='pyarrow')
```

#### Problem description

Examine the Parquet column type for each file (I use [`parquet-tools`](https://github.com/wesleypeck/parquet-tools)). `right.parq` has the expected UTF-8 string type. `wrong.parq` has an `INT32`.

While this seems like a problem in PyArrow (specifically [here](https://github.com/apache/arrow/blob/master/python/pyarrow/pandas_compat.py#L44-L70) and [here](https://github.com/apache/arrow/blob/master/python/pyarrow/pandas_compat.py#L711)), the root cause seems to be Pandas' metadata is inconsistent between the two dataframes. The following metadata is stored in the Parquet files:

right.parq
```json
{
  "column_indexes": [],
  "columns": [
    {
      "field_name": "col",
      "metadata": null,
      "name": "col",
      "numpy_type": "object",
      "pandas_type": "unicode"
    }
  ],
  "index_columns": [],
  "pandas_version": "0.24.1"
}
```

wrong.parq
```json
{
  "column_indexes": [],
  "columns": [
    {
      "field_name": "col",
      "metadata": null,
      "name": "col",
      "numpy_type": "object",
      "pandas_type": "empty"
    }
  ],
  "index_columns": [],
  "pandas_version": "0.24.1"
}
```

The difference between the two is that the `pandas_type` for the incorrect file is "empty" rather than the expected "unicode". PyArrow misinterprets this and defaults to a 32-bit integer column.

The incorrect datatype will cause Redshift to reject the file when we try to read it because the column type in the file doesn't match the column type in the database table.

#### Expected Output

A DataFrame column constructed with a Series should have dtype metadata identical to a column returned by `astype()`.

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

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

pandas: 0.24.1
pytest: None
pip: 18.1
setuptools: 40.6.2
Cython: None
numpy: 1.16.1
scipy: None
pyarrow: 0.12.0
xarray: None
IPython: None
sphinx: None
patsy: None
dateutil: 2.8.0
pytz: 2018.9
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: None
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml.etree: 4.3.1
bs4: None
html5lib: 1.0.1
sqlalchemy: 1.2.17
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: 0.2.0
fastparquet: 0.2.1
pandas_gbq: 0.9.0
pandas_datareader: None
gcsfs: None
</pre>
</details>
