### 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
memory_facts = {}
        if not os.access("/proc/meminfo", os.R_OK):
            return memory_facts
        memstats = {}
        for line in get_file_lines("/proc/meminfo"):
            data = line.split(":", 1)
            key = data[0]
            if key in self.ORIGINAL_MEMORY_FACTS:
                val = data[1].strip().split(' ')[0]
                memory_facts["%s_mb" % key.lower()] = int(val) // 1024
            if key in self.MEMORY_FACTS:
                val = data[1].strip().split(' ')[0]
                memstats[key.lower()] = int(val) // 1024
        if None not in (memstats.get('memtotal'), memstats.get('memfree')):
            memstats['real:used'] = memstats['memtotal'] - memstats['memfree']
        if None not in (memstats.get('cached'), memstats.get('memfree'), memstats.get('buffers')):
            memstats['nocache:free'] = memstats['cached'] + memstats['memfree'] + memstats['buffers']
        if None not in (memstats.get('memtotal'), memstats.get('nocache:free')):
            memstats['nocache:used'] = memstats['memtotal'] - memstats['nocache:free']
        if None not in (memstats.get('swaptotal'), memstats.get('swapfree')):
            memstats['swap:used'] = memstats['swaptotal'] - memstats['swapfree']
        memory_facts['memory_mb'] = {
            'real': {
                'total': memstats.get('memtotal'),
                'used': memstats.get('real:used'),
                'free': memstats.get('memfree'),
            },