concat with Misaligned Column Labels and Extension Types loses Dtype
Was a little surprised by this behavior when combining frames with the string dtype and misaligned labels

```python
In [2]: one = pd.DataFrame([["a"]], dtype="string", columns=["a"])
In [3]: two = pd.DataFrame([["b"]], dtype="string", columns=["b"])
In [4]: pd.concat([one, two]).dtypes
Out[4]:
a    object
b    object
dtype: object
```

A similar issue is exhibited with the integer types:

```python
In [13]: one = pd.DataFrame([[1]], dtype="uint16", columns=["a"])
In [14]: two = pd.DataFrame([[2]], dtype="uint16", columns=["b"])
In [15]: pd.concat([one, two]).dtypes
Out[15]:
a    float64
b    float64
dtype: object
```

Occurs on master