### Summary

When using `difference` filter with element that have just case-difference in the value of the filter, only one is kept.

### Issue Type

Feature Request

### Component Name

filters

### Ansible Version

```console
$ ansible --version
ansible 2.9.10
  config file = None
  configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.8.8 (default, Mar  4 2021, 21:24:42) [GCC 10.2.0]
```


### Configuration

```console
$ ansible-config dump --only-changed
```


### OS / Environment

RHEL 7

### Steps to Reproduce

```yaml
- hosts: localhost
  vars:
    list1:
      - a
      - A
      - b
      - B
    list2:
      - b
  tasks:
    - debug:
        msg: "{{ list1 | difference(list2) }}"
    - debug:
        msg: "{{ list1 | difference([]) }}"
```

```shell
ansible-playbook playbook.yml
```

### Expected Results

**All** the elements of `list1` that don’t exist in `list2` (as documented)

```
TASK [debug] ***********************
ok: [localhost] => {
    "msg": [
        "a",
        "A",
        "B"
    ]
}

TASK [debug] ***********************
ok: [localhost] => {
    "msg": [
        "a",
        "A",
        "b",
        "B"
    ]
}
```

### Actual Results

```console
TASK [debug] ***********************
ok: [localhost] => {
    "msg": [
        "a",
        "B"
    ]
}

TASK [debug] ***********************
ok: [localhost] => {
    "msg": [
        "a",
        "b"
    ]
}
```


### Code of Conduct

I agree to follow the Ansible Code of Conduct
if isinstance(a, Hashable) and isinstance(b, Hashable):
        c = set(a) & set(b)
    else:
        c = unique(environment, [x for x in a if x in b])
    return c
@environmentfilter
def difference(environment, a, b):
    if isinstance(a, Hashable) and isinstance(b, Hashable):
        c = set(a) - set(b)
    else:
        c = unique(environment, [x for x in a if x not in b])
    return c
@environmentfilter
def symmetric_difference(environment, a, b):