Series.convert_dtypes is not idempotent with small strings
#### Code Sample, a copy-pastable example if possible

```python
s = pd.Series(['x', 'y', 'z'])
print(s.dtype, s.convert_dtypes().dtype, s.convert_dtypes().convert_dtypes().dtype, sep='\n')
```

Output:
```
object
string
|S1
```
#### Problem description

It is reasonably expected that the output of `convert_dtypes` will always be stable such that if it's applied multiple times to the same Series, the subsequent calls after the first one will be redundant and will result in no change. This reasonable assumption doesn't however hold; it's violated in different ways by the current implementation. In the pasted example, it converts `object` to `string` and then to `|S1` which is a clear violation of stability. In other cases I've seen it convert `object` to `string` and then back to `object`, with this making no sense.

Also, the word "best" should be removed from the documentation. In what formal way exactly is its output the best? In some cases I've seen this method change the dtype to dramatically increase the deep memory usage of a Series. Given the seemingly whimsical implementation, the term seems to carry no meaning. I think this entire method, as it stands, is a hack job, and has no place in the package.

#### Expected Output

```
object
|S1
|S1
```

#### Output of ``pd.show_versions()``

<details>

[paste the output of ``pd.show_versions()`` here below this line]
/usr/local/lib/python3.6/dist-packages/psycopg2/__init__.py:144: UserWarning: The psycopg2 wheel package will be renamed from release 2.8; in order to keep installing from binary please use "pip install psycopg2-binary" instead. For details see: <http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.
  """)
/usr/local/lib/python3.6/dist-packages/pandas_datareader/compat/__init__.py:18: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.
  from pandas.util.testing import assert_frame_equal


INSTALLED VERSIONS
------------------
commit           : None
python           : 3.6.9.final.0
python-bits      : 64
OS               : Linux
OS-release       : 4.14.137+
machine          : x86_64
processor        : x86_64
byteorder        : little
LC_ALL           : None
LANG             : en_US.UTF-8
LOCALE           : en_US.UTF-8

pandas           : 1.0.1
numpy            : 1.17.5
pytz             : 2018.9
dateutil         : 2.6.1
pip              : 19.3.1
setuptools       : 45.1.0
Cython           : 0.29.15
pytest           : 3.6.4
hypothesis       : None
sphinx           : 1.8.5
blosc            : None
feather          : 0.4.0
xlsxwriter       : None
lxml.etree       : 4.2.6
html5lib         : 1.0.1
pymysql          : None
psycopg2         : 2.7.6.1 (dt dec pq3 ext lo64)
jinja2           : 2.11.1
IPython          : 5.5.0
pandas_datareader: None
bs4              : 4.6.3
bottleneck       : 1.3.1
fastparquet      : None
gcsfs            : None
lxml.etree       : 4.2.6
matplotlib       : 3.1.3
numexpr          : 2.7.1
odfpy            : None
openpyxl         : 2.5.9
pandas_gbq       : 0.11.0
pyarrow          : 0.14.1
pytables         : None
pytest           : 3.6.4
pyxlsb           : None
s3fs             : 0.4.0
scipy            : 1.4.1
sqlalchemy       : 1.3.13
tables           : 3.4.4
tabulate         : 0.8.6
xarray           : 0.14.1
xlrd             : 1.1.0
xlwt             : 1.3.0
xlsxwriter       : None
numba            : 0.47.0
</details>
