##### SUMMARY

ec2_instance module stopped working after update to v 2.9.1

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME

ec2_instance module 
https://docs.ansible.com/ansible/latest/modules/ec2_instance_module.html

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/user0/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.0 (default, Oct 23 2019, 18:51:26) [GCC 9.2.0]
```

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

```

##### OS / ENVIRONMENT

```
uname -a
Linux work3 5.3.11-arch1-1 #1 SMP PREEMPT Tue, 12 Nov 2019 22:19:48 +0000 x86_64 GNU/Linux
```

##### STEPS TO REPRODUCE

previously working snippet
```yaml
- name: stop image instance 
  register: image_instance
  ec2_instance:
    region: "{{amazon_region}}"
    instance_ids: "{{instance_id}}"
    state: stopped
    wait: yes
    wait_timeout: 320
    aws_access_key: "{{aws_access_key_id}}"
    aws_secret_key: "{{aws_secret_access_key}}"
    validate_certs: no
```

##### EXPECTED RESULTS

invocation success

##### ACTUAL RESULTS

invocation failure

```paste below
Traceback (most recent call last):
  File "/home/user0/.ansible/tmp/ansible-tmp-1574115528.3222384-162345873183700/AnsiballZ_ec2_instance.py", line 102, in <module>
    _ansiballz_main()
  File "/home/user0/.ansible/tmp/ansible-tmp-1574115528.3222384-162345873183700/AnsiballZ_ec2_instance.py", line 94, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/user0/.ansible/tmp/ansible-tmp-1574115528.3222384-162345873183700/AnsiballZ_ec2_instance.py", line 40, in invoke_module
    runpy.run_module(mod_name='ansible.modules.cloud.amazon.ec2_instance', init_globals=None, run_name='__main__', alter_sys=True)
  File "/usr/lib/python3.8/runpy.py", line 205, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib/python3.8/runpy.py", line 95, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib/python3.8/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_ec2_instance_payload_hz5qgsqh/ansible_ec2_instance_payload.zip/ansible/modules/cloud/amazon/ec2_instance.py", line 1710, in <module>
  File "/tmp/ansible_ec2_instance_payload_hz5qgsqh/ansible_ec2_instance_payload.zip/ansible/modules/cloud/amazon/ec2_instance.py", line 1681, in main
  File "/tmp/ansible_ec2_instance_payload_hz5qgsqh/ansible_ec2_instance_payload.zip/ansible/modules/cloud/amazon/ec2_instance.py", line 1297, in find_instances
RuntimeError: dictionary keys changed during iteration
```

#### code in error:

code in error is in fact doing: "dictionary keys changed during iteration":

[ec2_instance.py#L1297](https://github.com/ansible/ansible/blob/v2.9.1/lib/ansible/modules/cloud/amazon/ec2_instance.py#L1297
)

```
        for key in filters.keys():
            if not key.startswith("tag:"):
                filters[key.replace("_", "-")] = filters.pop(key)
```

choices: [1, 2]
        required: true
        type: int
      core_count:
        description:
        - Set the number of core to enable.
        required: true
        type: int
  detailed_monitoring:
    description:
      - Whether to allow detailed cloudwatch metrics to be collected, enabling more detailed alerting.
    type: bool
  ebs_optimized:
    description:
      - Whether instance is should use optimized EBS volumes, see U(https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html).
    type: bool
  filters:
    description:
      - A dict of filters to apply when deciding whether existing instances match and should be altered. Each dict item
        consists of a filter key and a filter value. See
        U(https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html).
        for possible filters. Filter names and values are case sensitive.
      - By default, instances are filtered for counting by their "Name" tag, base AMI, state (running, by default), and
        subnet ID. Any queryable filter can be used. Good candidates are specific tags, SSH keys, or security groups.
    type: dict
  instance_role:
    description:
      - The ARN or name of an EC2-enabled instance role to be used. If a name is not provided in arn format
        then the ListInstanceProfiles permission must also be granted.
        U(https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html) If no full ARN is provided,