BUG: SparseDataFrame may not preserve passed dtype
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

`SparseDataFrame` may reset passed sparse data's `dtype` and `fill_value` as below.

**on current master:**

```
arr = pd.SparseArray([1, 0, 3, 0], dtype=np.int64, fill_value=0)

# OK, dtype and fill_value are kept
s = pd.SparseSeries(arr, name='x')
s.dtype, s.fill_value
(dtype('int64'), 0)

# NG, dtype is reset
df = pd.SparseDataFrame(s)
df['x'].dtype, df['x'].fill_value
(dtype('float64'), 0)

# NG, dtype is reset
df = pd.SparseDataFrame({'x': s})
df['x'].dtype, df['x'].fill_value
(dtype('float64'), 0)

# NG, dtype and fill_value are reset
df = pd.SparseDataFrame({'x': arr})
df['x'].dtype, df['x'].fill_value
(dtype('float64'), nan)
```

## [Current coverage](https://codecov.io/gh/pydata/pandas/pull/13866?src=pr) is 85.28% (diff: 100%)

> Merging [#13866](https://codecov.io/gh/pydata/pandas/pull/13866?src=pr) into [master](https://codecov.io/gh/pydata/pandas/branch/master?src=pr) will decrease coverage by **<.01%**

``` diff
@@             master     #13866   diff @@
==========================================
  Files           139        139          
  Lines         50011      50008     -3   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
- Hits          42650      42647     -3   
  Misses         7361       7361          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [768bf49...dea69ed](https://codecov.io/gh/pydata/pandas/compare/768bf495b9b1f2e6a51708ca6ba83da239cbe504...dea69ed398f138831feb94668c686b38321104dd?src=pr)
 thanks!
