##### SUMMARY
This is largely a feature necessary for ansible-runner and Tower, but as of now, to respond to password prompts, runner uses `pexpect`.  

`pexpect` comes with its own host of issues, like the fact that even after you've matched the prompt and sent the response, it still buffers the output for the remainder of execution and adds extra overhead that is unnecessary.

Investigate enabling a way via named pipe, or some other potential ideas, to supply these passwords, other than prompting, or supplying inventory vars.  Providing vars exposes them, and there may be use cases to provide them in a way that the playbook doesn't necessarily have access to.

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
lib/ansible/cli

##### ADDITIONAL INFORMATION
<!--- Describe how the feature would be used, why it is needed and what it would solve -->

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

```

<!--- HINT: You can also paste gist.github.com links for larger files -->

try:
    import argcomplete
    HAS_ARGCOMPLETE = True
except ImportError:
    HAS_ARGCOMPLETE = False
display = Display()
class CLI(with_metaclass(ABCMeta, object)):
    ''' code behind bin/ansible* programs '''
    PAGER = 'less'
    
    
    LESS_OPTS = 'FRSX'
    SKIP_INVENTORY_DEFAULTS = False
    def __init__(self, args, callback=None):
        """
        Base init method for all command line programs
        """
        if not args:
            raise ValueError('A non-empty list for args is required')
        self.args = args
        self.parser = None
        self.callback = callback
        if C.DEVEL_WARNING and __version__.endswith('dev0'):
            display.warning(
                'You are running the development version of Ansible. You should only run Ansible from "devel" if '
                'you are modifying the Ansible engine, or trying out features under development. This is a rapidly '
                'changing source of code and can become unstable at any point.'
            )
    @abstractmethod
    def run(self):