<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->
The `collections` keyword does not support templating, contrary to other playbook keywords, such as `module_defaults`.

I am trying to specify the collections list at a single place and then just reference them in every playbook instead of bloating each playbook.

Alternatively, it would be great if there was a configuration variable, e.g. `ANSIBLE_DEFAULT_COLLECTIONS`, for that purpose.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
collections

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.10.0.dev0
  config file = /home/nikos/Projects/ansible-demo/ansible.cfg
  configured module search path = ['/home/nikos/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/nikos/.local/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.1 (default, Jan 22 2020, 06:38:00) [GCC 9.2.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
none
```

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
`play1.yml`
```yaml
---
- hosts: localhost
  gather_facts: no
  tags: qqq
  tasks:
    - set_fact:
        collections:
          - community.general
```

`play2.yml`
```
---

- hosts: localhost
  collections: "{{ collections }}"
  tasks:
    - debug:
        msg: "{{ list1 | union(list2) }}"
```

`playbook.yml`
```
---

- import_playbook: play1.yml

- import_playbook: play2.yml

```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
I would expect the collections list to be resolved.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes -->
```paste below
[WARNING]: You are running the development version of Ansible. You should only run Ansible from "devel" if you are modifying the Ansible engine, or trying out features under development. This is a rapidly changing source of code and can become unstable at any point.
ansible-playbook 2.10.0.dev0
  config file = /home/nikos/Projects/ansible-demo/ansible.cfg
  configured module search path = ['/home/nikos/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/nikos/.local/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 3.8.1 (default, Jan 22 2020, 06:38:00) [GCC 9.2.0]
Using /home/nikos/Projects/ansible-demo/ansible.cfg as config file
setting up inventory plugins
host_list declined parsing /home/nikos/Projects/ansible-demo/inventory/inventory.yml as it did not pass its verify_file() method
script declined parsing /home/nikos/Projects/ansible-demo/inventory/inventory.yml as it did not pass its verify_file() method
Parsed /home/nikos/Projects/ansible-demo/inventory/inventory.yml inventory source with yaml plugin
ERROR! Unexpected Exception, this is probably a bug: 'AnsibleUnicode' object has no attribute 'append'
the full traceback was:

Traceback (most recent call last):
  File "/usr/bin/ansible-playbook", line 123, in <module>
    exit_code = cli.run()
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/cli/playbook.py", line 127, in run
    results = pbex.run()
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/executor/playbook_executor.py", line 91, in run
    pb = Playbook.load(playbook_path, variable_manager=self._variable_manager, loader=self._loader)
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/playbook/__init__.py", line 51, in load
    pb._load_playbook_data(file_name=file_name, variable_manager=variable_manager)
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/playbook/__init__.py", line 96, in _load_playbook_data
    pb = PlaybookInclude.load(entry, basedir=self._basedir, variable_manager=variable_manager, loader=self._loader)
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/playbook/playbook_include.py", line 42, in load
    return PlaybookInclude().load_data(ds=data, basedir=basedir, variable_manager=variable_manager, loader=loader)
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/playbook/playbook_include.py", line 72, in load_data
    pb._load_playbook_data(file_name=file_name, variable_manager=variable_manager, vars=self.vars.copy())
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/playbook/__init__.py", line 103, in _load_playbook_data
    entry_obj = Play.load(entry, variable_manager=variable_manager, loader=self._loader, vars=vars)
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/playbook/play.py", line 116, in load
    return p.load_data(data, variable_manager=variable_manager, loader=loader)
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/playbook/base.py", line 235, in load_data
    self._attributes[target_name] = method(name, ds[name])
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/playbook/collectionsearch.py", line 44, in _load_collections
    _ensure_default_collection(collection_list=ds)
  File "/home/nikos/.local/lib/python3.8/site-packages/ansible/playbook/collectionsearch.py", line 31, in _ensure_default_collection
    collection_list.append('ansible.legacy')
AttributeError: 'AnsibleUnicode' object has no attribute 'append'

```
if collections_list and 'ansible.builtin' not in collections_list and 'ansible.legacy' not in collections_list:
            collections_list.append('ansible.legacy')
        if collections_list:
            ds['collections'] = collections_list
        
        
        
        args_parser = ModuleArgsParser(task_ds=ds, collection_list=collections_list)
        try:
            (action, args, delegate_to) = args_parser.parse()
        except AnsibleParserError as e:
            
            
            if e._obj:
                raise
            
            raise AnsibleParserError(to_native(e), obj=ds, orig_exc=e)
        
        
        
        if action in ('command', 'shell', 'script'):
            if 'cmd' in args:
                if args.get('_raw_params', '') != '':
                    raise AnsibleError("The 'cmd' argument cannot be used when other raw parameters are specified."
                                       " Please put everything in one or the other place.", obj=ds)
                args['_raw_params'] = args.pop('cmd')
        new_ds['action'] = action
        new_ds['args'] = args
        new_ds['delegate_to'] = delegate_to