##### SUMMARY
Custom lookup plugin appears correctly configured using ```ansible-doc -t lookup listFolders```  however always results in ```FAILED! => {"msg": "lookup plugin (listFolders) not found"}``` when used in playbook.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
- Custom lookup plugin

##### ANSIBLE VERSION
```
ansible 2.9.2
  config file = /Users/xxxx/.ansible.cfg
  configured module search path = ['/Users/xxxx/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/Cellar/ansible/2.9.2_1/libexec/lib/python3.8/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.8.1 (default, Dec 27 2019, 18:05:45) [Clang 11.0.0 (clang-1100.0.33.16)]
```

##### CONFIGURATION
```
defaults only
```

##### OS / ENVIRONMENT
- macOS Mojave 10.14.6
- zsh 5.3 (x86_64-apple-darwin18.0)

##### STEPS TO REPRODUCE
Here is a trivial custom lookup plugin that just contains documentation to test my configuration. 
It is placed in /Users/xxxx/.ansible/plugins/lookup/listFolders.py
```
DOCUMENTATION = """
    lookup: listFolders
    short_description: returns list from yaml descriptor
    description:
        - This lookup returns a list from the yaml descriptor
"""
```

This command correctly pics up the lookup plugin:
```ansible-doc -t lookup listFolders```

And shows the output:
```
> LISTFOLDERS    (/Users/xxxx/.ansible/plugins/lookup/listFolders.py)

        This lookup returns a list from the yaml descriptor

  * This module is maintained by The Ansible Community
        METADATA:
          status:
          - preview
          supported_by: community
```

However in a playbook I always hit this error:
```fatal: [localhost]: FAILED! => {"msg": "lookup plugin (listFolders) not found"}```

Here is a sample playbook that produces the error:
```
---
- name: "Test custom lookup plugin"
  hosts: localhost
  tasks:
    - name: lookup listFolders
      debug:
        msg: '{{ lookup("listFolders") }}'

```

##### EXPECTED RESULTS
```
TASK [lookup listFolders] ***************************************************************************************************************************************************************
ok: [localhost]
```


##### ACTUAL RESULTS
```
TASK [lookup listFolders] ***************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"msg": "lookup plugin (listFolders) not found"}
```


<!--- Paste verbatim command output between quotes -->
```
> ansible-playbook testplaybook.yml 

[WARNING]: No inventory was parsed, only implicit localhost is available

[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'


PLAY [Test custom lookup plugin] ************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************************************************
ok: [localhost]

TASK [lookup listFolders] ***************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"msg": "lookup plugin (listFolders) not found"}

PLAY RECAP ******************************************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
```

The string inside of the {{ gets interpreted multiple times First by yaml.
    Then by python.  And finally by jinja2 as part of it's variable.  Because
    it is processed by both python and jinja2, the backslash escaped
    characters get unescaped twice.  This means that we'd normally have to use
    four backslashes to escape that.  This is painful for playbook authors as
    they have to remember different rules for inside vs outside of a jinja2
    expression (The backslashes outside of the "{{ }}" only get processed by
    yaml and python.  So they only need to be escaped once).  The following
    code fixes this by automatically performing the extra quoting of
    backslashes inside of a jinja2 expression.
    """
    if '\\' in data and '{{' in data:
        new_data = []
        d2 = jinja_env.preprocess(data)
        in_var = False
        for token in jinja_env.lex(d2):
            if token[1] == 'variable_begin':
                in_var = True
                new_data.append(token[2])
            elif token[1] == 'variable_end':
                in_var = False
                new_data.append(token[2])
            elif in_var and token[1] == 'string':
                
                new_data.append(token[2].replace('\\', '\\\\'))
            else:
                new_data.append(token[2])
        data = ''.join(new_data)
    return data
def is_template(data, jinja_env):