CLN/API: is_string_dtype should infer
The string detection routines are a bit odd, they work with arrays & not list-likes. We should change the impl to ``infer_dtype`` which already does the correct things.

```
[5]: from pandas.core.dtypes.common import is_string_like_dtype, is_string_dtype

In [2]: is_string_like_dtype(np.array([b'foo']))                  
Out[2]: True

# should work
In [3]: is_string_like_dtype([b'foo'])          
Out[3]: False

# should work
In [4]: is_string_like_dtype(np.array(['foo', 'bar'], dtype=object))
Out[4]: False

In [6]: is_string_dtype(np.array(['foo', 'bar'], dtype=object))                    
Out[6]: True

# should work
In [7]: is_string_dtype(['foo', 'bar'])                        
Out[7]: False
```
We should also consolidate these into a single ``is_string_dtype`` if possible (this might be tricky though).

