### Summary

 When we updated `Display` to proxy over the queue for dispatch by the main process in https://github.com/ansible/ansible/pull/77056, we ended up losing some context, since we only proxy the `Display.display` method, and not all methods individually.

We need to add some functionality to `Display` to preserve this context, whether that means shipping additional information across the queue, or proxying all methods instead of just `Display.display`.

This has impacts on ansible-runner, and input should be taken to evaluate the best option.

### Issue Type

Feature Idea

### Component Name

lib/ansible/utils/display.py

### Additional Information

TBD

### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
if original_task._role is not None and role_ran:  
                
                
                role_obj = self._get_cached_role(original_task, iterator._play)
                role_obj._had_task_run[original_host.name] = True
            ret_results.append(task_result)
            if isinstance(original_task, Handler):
                for handler in (h for b in iterator._play.handlers for h in b.block if h._uuid == original_task._uuid):
                    handler.remove_host(original_host)
            if one_pass or max_passes is not None and (cur_pass + 1) >= max_passes:
                break
            cur_pass += 1
        return ret_results
    def _wait_on_pending_results(self, iterator):
        '''
        Wait for the shared counter to drop to zero, using a short sleep
        between checks to ensure we don't spin lock
        '''
        ret_results = []
        display.debug("waiting for pending results...")
        while self._pending_results > 0 and not self._tqm._terminated:
            if self._tqm.has_dead_workers():
                raise AnsibleError("A worker was found in a dead state")
            results = self._process_pending_results(iterator)
            ret_results.extend(results)
            if self._pending_results > 0:
                time.sleep(C.DEFAULT_INTERNAL_POLL_INTERVAL)
        display.debug("no more pending results, returning what we have")
        return ret_results
    def _copy_included_file(self, included_file):