##### SUMMARY
The delete operation of the `lightsail` module is not idempotent. If the instance is already deleted, then the task generates a traceback.

```
Traceback (most recent call last):
  File "ansible/modules/cloud/amazon/lightsail.py", line 458, in main
  File "ansible/modules/cloud/amazon/lightsail.py", line 422, in core
  File "ansible/module_utils/common/dict_transformations.py", line 42, in camel_dict_to_snake_dict
    for k, v in camel_dict.items():
AttributeError: 'NoneType' object has no attribute 'items'
```

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
`lightsail`

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.10.0.dev0
```

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

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Python 3.7.4

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

<!--- Paste example playbooks or commands between quotes below -->
```yaml
- lightsail:
    state: absent
    name: my_instance
```

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
Task successfully returns with `changed: false`.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
Instead this traceback is generated - 
<!--- Paste verbatim command output between quotes -->
```paste below
Traceback (most recent call last):
  File "ansible/modules/cloud/amazon/lightsail.py", line 458, in main
  File "ansible/modules/cloud/amazon/lightsail.py", line 422, in core
  File "ansible/module_utils/common/dict_transformations.py", line 42, in camel_dict_to_snake_dict
    for k, v in camel_dict.items():
AttributeError: 'NoneType' object has no attribute 'items'

```

except botocore.exceptions.ClientError as e:
        if e.response['Error']['Code'] != 'NotFoundException':
            module.fail_json(msg='Error finding instance {0}, error: {1}'.format(instance_name, e))
    
    if wait:
        while wait_max > time.time() and inst is not None and inst['state']['name'] in ('pending', 'stopping'):
            try:
                time.sleep(5)
                inst = _find_instance_info(client, instance_name)
            except botocore.exceptions.ClientError as e:
                if e.response['ResponseMetadata']['HTTPStatusCode'] == "403":
                    module.fail_json(msg="Failed to delete instance {0}. Check that you have permissions to perform the operation.".format(instance_name),
                                     exception=traceback.format_exc())
                elif e.response['Error']['Code'] == "RequestExpired":
                    module.fail_json(msg="RequestExpired: Failed to delete instance {0}.".format(instance_name), exception=traceback.format_exc())
                
                time.sleep(10)
    
    if inst is not None:
        while not changed and ((wait and wait_max > time.time()) or (not wait)):
            try:
                client.delete_instance(instanceName=instance_name)
                changed = True
            except botocore.exceptions.ClientError as e:
                module.fail_json(msg='Error deleting instance {0}, error: {1}'.format(instance_name, e))
    
    if wait and not changed and wait_max <= time.time():
        module.fail_json(msg="wait for instance delete timeout at %s" % time.asctime())
    return (changed, inst)
def restart_instance(module, client, instance_name):