BUG: is_string_dtype(pd.Index([], dtype='O')) returns False
- [x] closes #54661
- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests)
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit)
- [x] Added an entry in `doc/source/whatsnew/v2.2.0.rst`

Corrected the definition of `is_all_strings`. Now for object arrays, which have no items `is_string_dtype` returns `True` instead of `False`.
@jbrockmendel, could you please take a look at this PR? @jbrockmendel, I corrected my PR, could you please take a look at the update? LGTM.  pls merge main and ping on green > LGTM. pls merge main and ping on green

thanks, I merged main, ci - green thanks @natmokval 