<!--- Verify first that your feature was not already discussed on GitHub -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
When I read the `copy` documentation, I couldn't work out what it meant.  Unfortunately, this meant it sounded like it might be a weird sex joke.

It doesn't sound like a big problem, but in an ideal world, I think we should prefer to avoid weird sex jokes in an alias for a parameter called `force`.

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
copy

##### ADDITIONAL INFORMATION
Issue search tells me "thirsty" was added as an option to the `get_url` module.  In that context, it is appropriate.  But in the context of the `copy` module, it does not make sense, because `copy` only works in the upload direction.

The first three pages of Google Search results (Ansible thirsty) show people using "thirsty" for downloads only, not uploads.  Similarly for GitHub code search (copy thirsty language:YAML).
:kw before_communicate_callback: This function will be called
            after ``Popen`` object will be created
            but before communicating to the process.
            (``Popen`` object will be passed to callback as a first argument)
        :returns: A 3-tuple of return code (integer), stdout (native string),
            and stderr (native string).  On python2, stdout and stderr are both
            byte strings.  On python3, stdout and stderr are text strings converted
            according to the encoding and errors parameters.  If you want byte
            strings on python3, use encoding=None to turn decoding to text off.
        '''
        
        self._clean = None
        if not isinstance(args, (list, binary_type, text_type)):
            msg = "Argument 'args' to run_command must be list or string"
            self.fail_json(rc=257, cmd=args, msg=msg)
        shell = False
        if use_unsafe_shell:
            
            if isinstance(args, list):
                args = b" ".join([to_bytes(shlex_quote(x), errors='surrogate_or_strict') for x in args])
            else:
                args = to_bytes(args, errors='surrogate_or_strict')
            
            if executable:
                executable = to_bytes(executable, errors='surrogate_or_strict')
                args = [executable, b'-c', args]
            elif self._shell not in (None, '/bin/sh'):
                args = [to_bytes(self._shell, errors='surrogate_or_strict'), b'-c', args]
            else:
                shell = True