### Summary

With a simple playbook:
```yaml
---
- hosts: all
  gather_facts: false
  tasks:
    - name: Test setup
      ansible.builtin.setup:
        gather_subset:
          - mounts
        gather_timeout: 600
```

```gather_timeout``` is never taken in effect in the function get_mount_facts in ansible/module_utils/facts/hardware/linux.py.

The problem seem to point to this line:
```python
maxtime = globals().get('GATHER_TIMEOUT') or timeout.DEFAULT_GATHER_TIMEOUT
```
```globals().get('GATHER_TIMEOUT')``` is always ```None``` because because ```GATHER_TIMEOUT``` is set in the timeout module ansible/module_utils/facts/collector.py therefore the global is ```timeout.GATHER_TIMEOUT``` and not ```GATHER_TIMEOUT```.

Attached are two screenshot from a vscode debug session of the AnsiballZ_setup.py from the playbook above.
<img width="949" alt="ansible_setup_timeout_linux" src="https://user-images.githubusercontent.com/1870021/215522822-fd1f8541-907d-4f1f-9dba-c8cec299514e.png">
<img width="1008" alt="ansible_setup_timeout_collector" src="https://user-images.githubusercontent.com/1870021/215522828-a9e3ea51-0da3-4497-aee6-c58ce7f7c801.png">


### Issue Type

Bug Report

### Component Name

setup

### Ansible Version

```console
$ ansible --version
ansible [core 2.14.1]
  config file = /home/dsg4269/.ansible.cfg
  configured module search path = ['/home/dsg4269/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/dsg4269/dev/git/test_timeout_fact_mount/.venv/lib64/python3.11/site-packages/ansible
  ansible collection location = /home/dsg4269/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/dsg4269/dev/git/test_timeout_fact_mount/.venv/bin/ansible
  python version = 3.11.1 (main, Jan  6 2023, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)] (/home/dsg4269/dev/git/test_timeout_fact_mount/.venv/bin/python3)
  jinja version = 3.1.2
  libyaml = True
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
CONFIG_FILE() = None
```


### OS / Environment

Reproduce on RHEL 7.9 and WSL Fedora 37

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml
---
- hosts: all
  gather_facts: false
  tasks:
    - name: Test setup
      ansible.builtin.setup:
        gather_subset:
          - mounts
        gather_timeout: 600

```


### Expected Results

I expected the gather_timeout to be taken in effect in the setup module of the subset mounts.

### Actual Results

```console
Facts have a timeout on system with a lot of filesystem:

{
    "device": "/dev/mapper/VolGroup00-lv_varlog",
    "fstype": "xfs",
    "mount": "/var/log",
    "note": "Timed out while attempting to get extra information.",
    "options": "rw,seclabel,nodev,relatime,attr2,inode64,noquota"
}
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
args = ['--list', '--noheadings', '--notruncate']
        cmd = [findmnt_path] + args
        rc, out, err = self.module.run_command(cmd, errors='surrogate_then_replace')
        return rc, out, err
    def _find_bind_mounts(self):
        bind_mounts = set()
        findmnt_path = self.module.get_bin_path("findmnt")
        if not findmnt_path:
            return bind_mounts
        rc, out, err = self._run_findmnt(findmnt_path)
        if rc != 0:
            return bind_mounts
        
        for line in out.splitlines():
            fields = line.split()
            
            if len(fields) < 2:
                continue
            
            if self.BIND_MOUNT_RE.match(fields[1]):
                bind_mounts.add(fields[0])
        return bind_mounts
    def _mtab_entries(self):