##### SUMMARY
docker_image module is missing etc_hosts parameter even if this is documented and accepted by docker.build() as  of https://docker-py.readthedocs.io/en/stable/images.html

The same argument is accepted by docker_run but the lack of support here prevents us from building images when extra_hosts is needed.

I mention that the only reason why I propose using `etc_hosts` is in order to keep it in sync with already existing implementation from `docker_container` module which accepts `etc_hosts` which is translated to `extra_hosts` on docker-python-api.

I would personally prefer to use the same names as docker-api but this would require changing docker_container too.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
docker_image

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

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

```

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


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

<!--- Paste example playbooks or commands between quotes below -->
```yaml

```

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

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->


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

<!--- Paste verbatim command output between quotes -->
```paste below

```

nocache='nocache',
        path='path',
        pull='pull',
        rm='rm',
        buildargs='args',
    )
    for option, build_option in build_options.items():
        default_value = None
        if option in ('rm', ):
            default_value = True
        elif option in ('nocache', ):
            default_value = False
        if client.module.params[option] != default_value:
            if client.module.params['build'] is None:
                client.module.params['build'] = dict()
            if client.module.params['build'].get(build_option, default_value) != default_value:
                client.fail('Cannot specify both %s and build.%s!' % (option, build_option))
            client.module.params['build'][build_option] = client.module.params[option]
            client.module.warn('Please specify build.%s instead of %s. The %s option '
                               'has been renamed and will be removed in Ansible 2.12.' % (build_option, option, option))
    if client.module.params['source'] == 'build':
        if (not client.module.params['build'] or not client.module.params['build'].get('path')):
            client.fail('If "source" is set to "build", the "build.path" option must be specified.')
        if client.module.params['build'].get('pull') is None:
            client.module.warn("The default for build.pull is currently 'yes', but will be changed to 'no' in Ansible 2.12. "
                               "Please set build.pull explicitly to the value you need.")
            client.module.params['build']['pull'] = True  
    if client.module.params['state'] == 'present' and client.module.params['source'] is None:
        
        if (client.module.params['build'] or dict()).get('path'):