BUG: Fix pyarrow and numpy logical bug concerning bool and string
- [ ] closes #60234 
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/v3.0.0.rst` file if fixing a bug or adding a new feature.

Using logical operators (e.g., |, &) on non-boolean data, where this data should be cast to bool, works for most types (e.g., float, strings). However, these operations fail with pyarrow-backed strings and numpy-backed strings. 

This PR fixes the issues with pyarrow-backed string arrays by casting them into boolean arrays when they are used with logical operators. The newly implemented helper functions `convert_string_to_boolean_array` and `cast_for_logical` perform the casting, while the `ARROW_LOGICAL_FUNCS` dictionary has been modified to use these helper functions in the process of performing logical operations (see [pandas/core/arrays/arrow/array.py](https://github.com/ldlin1/pandas/commit/d97c8378a4830fde48aad1e99e60eea7a2cea5ff)).

This PR fixes the issues with numpy-backed string arrays by casting them into boolean arrays whenever they are used with boolean arrays in logical operations. This is done in the `logical_op` function (see [pandas/core/ops/array_ops.py](https://github.com/ldlin1/pandas/commit/7188634652e87c8be8e7b983565c6ee0d9970d34)).
Thanks for the pull request, but it appears to have gone stale. If interested in continuing, please merge in the main branch, address any review comments and/or failing tests, and we can reopen.