[backport 2.3.x] String dtype: enable in SQL IO + resolve all xfails (#60255)
(cherry picked from commit ba4d1cfdda14bf521ff91d6ad432b21095c417fd)

Backport of https://github.com/pandas-dev/pandas/pull/60255
Thanks for opening. I'll take a look at the failures As far as I can tell this issue might exist at a deeper level on the backport branch. On main, I see this behavior:

```python
>>> import pandas as pd
>>> import pandas._libs.lib as lib
>>> import numpy as np

>>> arr = np.array(["a", "b", None])
>>> lib.maybe_convert_objects(arr, convert_to_nullable_dtype=True, convert_non_numeric=True)
<StringArray>
['a', 'b', <NA>]
Length: 3, dtype: string
```

that same call on the backport branch yields np.nan as the missing value sentinel:

```python
>>> lib.maybe_convert_objects(arr, convert_to_nullable_dtype=True, convert_non_numeric=True)
<StringArrayNumpySemantics>
['a', 'b', nan]
Length: 3, dtype: str
```

that is unexpected right? I think the backport branch was missing the change in https://github.com/pandas-dev/pandas/pull/59487 shown in the second commit here; adding that back in locally gets the tests to pass

Not sure where that got removed, but assuming during the setup of the backport branch accidentally Thanks for figuring that out!

There is still something related to the datetime64 resolution, will take a look at that I think the datetime issues were caused by a very subtle backport issue. Hopefully resolved by latest commit Is there a way to restart the failed pre-commit job? I think that is spurious Thanks for the fix!

> Is there a way to restart the failed pre-commit job? I think that is spurious

No idea. I typically just ignore it if it times out
