##### SUMMARY
If `callback_whitelist` contains a FQCN that does not exist, Ansible will crash:
```
ERROR! Unexpected Exception, this is probably a bug: 'NoneType' object has no attribute 'set_options'
the full traceback was:

Traceback (most recent call last):
  File "ansible/bin/ansible-playbook", line 123, in <module>
    exit_code = cli.run()
  File "ansible/lib/ansible/cli/playbook.py", line 127, in run
    results = pbex.run()
  File "ansible/lib/ansible/executor/playbook_executor.py", line 99, in run
    self._tqm.load_callbacks()
  File "ansible/lib/ansible/executor/task_queue_manager.py", line 165, in load_callbacks
    callback_obj.set_options()
AttributeError: 'NoneType' object has no attribute 'set_options'
```
This happens since #66128 (unsurprisingly). This is easy to fix by changing line 165 to
```
            if callback_obj is not None:
                callback_obj.set_options()
```
but this only fixes the symptom (crash), not the cause (no handling when callback not found).

I guess a better behavior would be to:
```
            if callback_obj is None:
                raise AnsibleError("Cannot find callback: %s" % callback_plugin_name)
```
or at least print a warning. Since I'm not sure what the correct behavior is, I'm creating this issue.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
lib/ansible/executor/task_queue_manager.py

##### ANSIBLE VERSION
```paste below
2.9
devel
```

self._stdout_callback.set_options()
                stdout_callback_loaded = True
        else:
            raise AnsibleError("callback must be an instance of CallbackBase or the name of a callback plugin")
        for callback_plugin in callback_loader.all(class_only=True):
            callback_type = getattr(callback_plugin, 'CALLBACK_TYPE', '')
            callback_needs_whitelist = getattr(callback_plugin, 'CALLBACK_NEEDS_WHITELIST', False)
            (callback_name, _) = os.path.splitext(os.path.basename(callback_plugin._original_path))
            if callback_type == 'stdout':
                
                if callback_name != self._stdout_callback or stdout_callback_loaded:
                    continue
                stdout_callback_loaded = True
            elif callback_name == 'tree' and self._run_tree:
                
                pass
            elif not self._run_additional_callbacks or (callback_needs_whitelist and (
                    C.DEFAULT_CALLBACK_WHITELIST is None or callback_name not in C.DEFAULT_CALLBACK_WHITELIST)):
                
                continue
            callback_obj = callback_plugin()
            callback_obj.set_options()
            self._callback_plugins.append(callback_obj)
        for callback_plugin_name in (c for c in C.DEFAULT_CALLBACK_WHITELIST if AnsibleCollectionRef.is_valid_fqcr(c)):
            
            callback_obj = callback_loader.get(callback_plugin_name)
            callback_obj.set_options()
            self._callback_plugins.append(callback_obj)
        self._callbacks_loaded = True
    def run(self, play):