### 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
else:
                            
                            self._set_always_delegated_facts(result_item, original_task)
                            host_list = self.get_task_hosts(iterator, original_host, original_task)
                        if original_task.action in C._ACTION_INCLUDE_VARS:
                            for (var_name, var_value) in result_item['ansible_facts'].items():
                                
                                
                                for target_host in host_list:
                                    self._variable_manager.set_host_variable(target_host, var_name, var_value)
                        else:
                            cacheable = result_item.pop('_ansible_facts_cacheable', False)
                            for target_host in host_list:
                                
                                
                                
                                
                                
                                is_set_fact = original_task.action in C._ACTION_SET_FACT
                                if not is_set_fact or cacheable:
                                    self._variable_manager.set_host_facts(target_host, result_item['ansible_facts'].copy())
                                if is_set_fact:
                                    self._variable_manager.set_nonpersistent_facts(target_host, result_item['ansible_facts'].copy())
                    if 'ansible_stats' in result_item and 'data' in result_item['ansible_stats'] and result_item['ansible_stats']['data']:
                        if 'per_host' not in result_item['ansible_stats'] or result_item['ansible_stats']['per_host']:
                            host_list = self.get_task_hosts(iterator, original_host, original_task)
                        else:
                            host_list = [None]
                        data = result_item['ansible_stats']['data']
                        aggregate = 'aggregate' in result_item['ansible_stats'] and result_item['ansible_stats']['aggregate']