<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->
The sefcotext module encounters an error when trying to run with parameter
`ftype` set to `"s"` when the fcontext is already present.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
sefcontext module

lib/ansible/modules/system/sefcontext.py

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.1
  ...
  python version = 3.7.5 (default, Oct 17 2019, 12:16:48) [GCC 9.2.1 20190827 (Red Hat 9.2.1-1)]
```

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

Fedora 31 WS. Also broken for CentOS 8.


##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
Run the given reproducer two or more times on the same target.

<!--- Paste example playbooks or commands between quotes below -->
```yaml
- name: "reproducer"
  sefcontext:
    ftype: "s"
    path: "/foo/bar"
    setype: "var_t"
```

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

##### EXPECTED RESULTS

- if no fcontext record exists, create record
- if fcontext record exists, ensure the type and context are set correctly

- first run: adds record (`changed: ...`)
- second run: fails (`ok: ...`)

```
TASK [reproducer : reproducer] *********************************************************************************
changed: [localhost]

...

TASK [reproducer : reproducer] *********************************************************************************
ok: [localhost]
```

##### ACTUAL RESULTS

- if no fcontext rule exists, create rule (this works fine)
- a existing rule does not get recognised and the module tries to create 

- first run: adds record (`changed: ...`)
- second run: fails (`fatal: ...`)

```
TASK [reproducer : reproducer] *********************************************************************************
changed: [localhost]

...

TASK [reproducer : reproducer] *********************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "ValueError: File context for /foo/bar already defined\n"}
```

## Proposed fix

When running `semanage fcontext -l` one can see the socket file type is called `socket` and not `socket file`. Also if you look in records at [this position](https://github.com/ansible/ansible/blob/ddd786eedfb416ee3fc0dbec3a2b65d58440d026/lib/ansible/modules/system/sefcontext.py#L163) some tuples with `(something, "socket")` show up but none with `(something, "socket file")`.

The following patch seems to fix the mentioned issue.

```diff
diff --git a/lib/ansible/modules/system/sefcontext.py b/lib/ansible/modules/system/sefcontext.py
index dfe846e7f2..33e3fd2e40 100644
--- a/lib/ansible/modules/system/sefcontext.py
+++ b/lib/ansible/modules/system/sefcontext.py
@@ -148,7 +148,7 @@ option_to_file_type_str = dict(
     f='regular file',
     l='symbolic link',
     p='named pipe',
-    s='socket file',
+    s='socket',
 )
```

---
CC: @dagwieers 
selevel:
    description:
    - SELinux range for the specified target.
    type: str
    aliases: [ serange ]
  state:
    description:
    - Whether the SELinux file context must be C(absent) or C(present).
    type: str
    choices: [ absent, present ]
    default: present
  reload:
    description:
    - Reload SELinux policy after commit.
    - Note that this does not apply SELinux file contexts to existing files.
    type: bool
    default: yes
  ignore_selinux_state:
    description:
    - Useful for scenarios (chrooted environment) that you can't get the real SELinux state.
    type: bool
    default: no
    version_added: '2.8'
notes:
- The changes are persistent across reboots.
- The M(sefcontext) module does not modify existing files to the new
  SELinux context(s), so it is advisable to first create the SELinux
  file contexts before creating files, or run C(restorecon) manually
  for the existing files that require the new SELinux file contexts.
- Not applying SELinux fcontexts to existing files is a deliberate