### Summary

Add preflight checks to `lib/ansible/cli/__init__.py` to ensure that `stdin`, `stdout`, and `stderr` are blocking, and not non-blocking.  The `Display` class cannot handle the non-blocking case, and it's been decided to not attempt work arounds to allow this.

We've experienced this happening in subprocesses where something like `ssh` sets these FDs as non-blocking and doesn't restore them to blocking, causing tracebacks.

### Issue Type

Feature Idea

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

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)

```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import sys
if sys.version_info < (3, 8):
    raise SystemExit(
        'ERROR: Ansible requires Python 3.8 or newer on the controller. '
        'Current version: %s' % ''.join(sys.version.splitlines())
    )
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 os
import subprocess
import traceback
from abc import ABC, abstractmethod
from pathlib import Path