Handle construction of string ExtensionArray from lists
I had to add a string-based Arrow Extension array to trigger the bug but did not run the same test suite as we do on the boolean array as I don't see it adding value but just runtime at the moment.

- [x] closes #27673
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Thanks.

I'm wondering a bit more general fix. What about something like

```python
# in sanitize_array. Somewhere before `data = extract_array(...)`

if not is_array_like(data) and is_extension_array_dtype(dtype):
    data = dtype.construct_array_type()._from_sequence(data, dtype=dtype, copy=copy)
```

Would that work? Then we get to the EA handling earlier on, and don't require special casing later on. I moved the check slightly up but didn't move it significantly up as the above code could actually be taken by ExtensionArray data. If I run into other issues, I would revisit this if I run into other problems while workin on `fletcher` but moving it to a more broad scope at the moment seems to me a bit risky as `sanitize_array` is not directly tested but only indirectly via `Series` constructions. OK, thanks.

@jbrockmendel can you take a look at this? small comment, otherwise looks good @jbrockmendel Adapted that but Travis keeps faling for unrelated reasons. Rebased on master and everything is green now. Thanks @xhochy !