BUG: multi-type SparseDataFrame fixes and improvements
- [X] 1 tests added / passed
- [X] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

Types were incorrectly determined when slicing SparseDataFrames with
multiple dtypes (such as float and object) into SparseSeries.

``` python
import pandas as pd
sdf = pd.SparseDataFrame([[1, 2, 'a'], [4, 5, 'b']])
sdf.iloc[[0]]  # OK
sdf.iloc[0]  # ValueError: could not convert string to float: 'a'
```

No existing issue covers this.
