Use repr of fill_value in SparseDtype repr
This proposes changing the StringDtype repr to show the fill_value's repr rather than its string representation:

```python
>>> arr = pd.arrays.SparseArray([0, 1])
>>> arr.dtype
Sparse[int64, 0]  # master & this PR, unchanged
>>> arr.astype(str).dtype
Sparse[object, 0]  # master
Sparse[object, '0']  # this PR, notice quotes
```

Ok, I've moved the tests. looks good can you add a release note (sparse bug fix section is ok). ping on green. Thanks! btw if would be helpful to survey other dtypes (mainly category) to see if we are consistent for various types Non of the other dtypes have the concept of a "fill_value" (or print another value in its dtype repr), so I am not sure what should be checked? of course; i am speaking generally

we expose other things in the repr eg categories  The CategoricalDtype is fine:

```
In [9]: pd.Categorical([1, 2, '3']).dtype 
Out[9]: CategoricalDtype(categories=[1, 2, '3'], ordered=False)
```

Categorical itself is not:

```
In [11]: pd.Categorical([1, 2, '3']) 
Out[11]: 
[1, 2, 3]
Categories (3, object): [1, 2, 3]
```

but that is actually already being handled in https://github.com/pandas-dev/pandas/pull/34222
