##### SUMMARY
There is no real reason that `UnsafeProxy` needs to exist.  

We need to add unsafe bytes support, and by doing so within `UnsafeProxy` over complicates matters.

`wrap_var` should effectively take over the work that `UnsafeProxy` is doing, and then just rely on `wrap_var` directly using the proper `AnsibleUnsafe*` classes. Or callers can directly use `AnsibleUnsafe*` themselves when `wrap_var` isn't necessary.

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
lib/ansible/utils/unsafe_proxy.py

##### 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 -->

'''
        The main executor entrypoint, where we determine if the specified
        task requires looping and either runs the task with self._run_loop()
        or self._execute(). After that, the returned results are parsed and
        returned as a dict.
        '''
        display.debug("in run() - task %s" % self._task._uuid)
        try:
            try:
                items = self._get_loop_items()
            except AnsibleUndefinedVariable as e:
                
                items = None
                self._loop_eval_error = e
            if items is not None:
                if len(items) > 0:
                    item_results = self._run_loop(items)
                    
                    res = dict(results=item_results)
                    
                    for item in item_results:
                        if 'changed' in item and item['changed'] and not res.get('changed'):