### Summary

Add preflight checks to `lib/ansible/cli/__init__.py` for both the local locale and the fsencoding to ensure they are `UTF-8`, and abort when they are not.

We implicitly require this now, but have never strictly enforced it. Due to using `pathlib` in more places, to avoid undefined behavior in our codebase, due to the utf-8 expectation, check this early and fail fast.

### Issue Type

Feature Idea

### Component Name
```
lib/ansible/cli/__init__.py
```
### Additional Information

We may also need to evaluate the `C` locale.  I know some users are running ansible from devices with only the `C` locale.

### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
"""Check stdin/stdout/stderr to make sure they are using blocking IO."""
    handles = []
    for handle in (sys.stdin, sys.stdout, sys.stderr):
        
        try:
            fd = handle.fileno()
        except Exception:
            continue  
        if not os.get_blocking(fd):
            handles.append(getattr(handle, 'name', None) or '#%s' % fd)
    if handles:
        raise SystemExit('ERROR: Ansible requires blocking IO on stdin/stdout/stderr. '
                         'Non-blocking file handles detected: %s' % ', '.join(_io for _io in handles))
check_blocking_io()
from importlib.metadata import version
from ansible.module_utils.compat.version import LooseVersion
jinja2_version = version('jinja2')
if jinja2_version < LooseVersion('3.0'):
    raise SystemExit(
        'ERROR: Ansible requires Jinja2 3.0 or newer on the controller. '
        'Current version: %s' % jinja2_version
    )
import errno
import getpass
import subprocess
import traceback
from abc import ABC, abstractmethod
from pathlib import Path