TST (string dtype): clean up construction of expected string arrays
~(depends on https://github.com/pandas-dev/pandas/pull/59470~, merged and rebased on top of it)

We have various places in the tests where we very explicitly construct the "raw" arrays for the different variants of the string dtype using their class constructors. 

I think we can simplify this by using our normal `pd.Series`/`pd.array` constructors with specifying the exact dtype (which will then rely on `StringDtype.construct_array_type()._from_sequence(..)` to construct the underling string array). This should give equivalent tests for what it is testing (and the constructors itself are tested elsewhere explicitly).

Also removes some xfails in those tests by fixing the logic of the expected string dtype (i.e. don't change the expected dtype when `future.infer_string` is enabled, see comment below at https://github.com/pandas-dev/pandas/pull/59481#pullrequestreview-2231818481)

xref https://github.com/pandas-dev/pandas/issues/54792
Sorry, I missed that with the last merge of main there were actually relevant failures (maybe some interaction with one of my other merged PRs). Quick fixup -> https://github.com/pandas-dev/pandas/pull/59509