DataFrame.__setitem__ is broken for SparseArray
It doesn't sparsify, and the values are incorrect.

I'll fix this in #22325 

```python
In [1]: import pandas as pd

In [2]: df = pd.DataFrame({"A": [1., None]})

In [3]: df['A'] = pd.SparseSeries(df.A)

In [4]: df.A.values
Out[4]: array([1., 1.])

In [5]: df = pd.DataFrame({"A": [True, False]})

In [6]: df['A'] = pd.SparseSeries(df.A)

In [7]: df.A.values
Out[7]: array([ True,  True])
```