### Summary

I would like to use ansible.builtin.get_url to download a file and check it against a SHA3 512 checksum. It appears that [hashlib](https://docs.python.org/3/library/hashlib.html) supports SHA3 and even uses it by default as of Python 3.9.

### Issue Type

Bug Report

### Component Name

get_url

### Ansible Version

```console
2.15.0
```

### Additional Information

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
- name: Retrieve the file
  ansible.builtin.get_url:
    url: "https://example.com/file"
    checksum: "sha3_512:{{ file_checksum }}"
    dest: "file"
  vars:
    file_checksum: '{{ lookup("file", "file.sha3_512").split()[0] }}'
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
:kw before_communicate_callback: This function will be called
            after ``Popen`` object will be created
            but before communicating to the process.
            (``Popen`` object will be passed to callback as a first argument)
        :kw ignore_invalid_cwd: This flag indicates whether an invalid ``cwd``
            (non-existent or not a directory) should be ignored or should raise
            an exception.
        :kw handle_exceptions: This flag indicates whether an exception will
            be handled inline and issue a failed_json or if the caller should
            handle it.
        :returns: A 3-tuple of return code (integer), stdout (native string),
            and stderr (native string).  On python2, stdout and stderr are both
            byte strings.  On python3, stdout and stderr are text strings converted
            according to the encoding and errors parameters.  If you want byte
            strings on python3, use encoding=None to turn decoding to text off.
        '''
        
        self._clean = None
        if not isinstance(args, (list, binary_type, text_type)):
            msg = "Argument 'args' to run_command must be list or string"
            self.fail_json(rc=257, cmd=args, msg=msg)
        shell = False
        if use_unsafe_shell:
            
            if isinstance(args, list):
                args = b" ".join([to_bytes(shlex_quote(x), errors='surrogate_or_strict') for x in args])
            else:
                args = to_bytes(args, errors='surrogate_or_strict')
            
            if executable: