### Summary

If you fail to add `become: true` on an Ubuntu system with systemd, you will quietly receive a list of the `sysv` services without any systemd services. This is due to the service facts module implementing its own separate test for systemd https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/service_facts.py#L224-L234 which quietly ignores a failure.

If it were to use the value of the ansible fact `ansible_service_mgr` instead then it would correctly catch this failure and report the warning.

### Issue Type

Bug Report

### Component Name

service_facts module

### Ansible Version

```console
$ ansible --version
ansible [core 2.12.1]
  config file = None
  configured module search path = ['/Users/jrhett/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /opt/homebrew/Cellar/ansible/5.2.0/libexec/lib/python3.10/site-packages/ansible
  ansible collection location = /Users/jrhett/.ansible/collections:/usr/share/ansible/collections
  executable location = /opt/homebrew/bin/ansible
  python version = 3.10.1 (main, Dec  6 2021, 22:18:13) [Clang 13.0.0 (clang-1300.0.29.3)]
  jinja version = 3.0.3
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed
(empty)
```


### OS / Environment

Target node is Ubuntu 20.04

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```shell
$ ansible -m service_facts <node ip>
```


### Expected Results

`WARNING: Could not find status for all services. Sometimes this is due to insufficient privileges.`

### Actual Results

```console
A quiet success with only sysv services.


52.14.195.85 | SUCCESS => {
    "ansible_facts": {
        "services": {
            "acpid": {
                "name": "acpid",
                "source": "sysv",
                "state": "stopped"
            },
            "apparmor": {
                "name": "apparmor",
                "source": "sysv",
                "state": "stopped"
            },
```
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
from __future__ import absolute_import, division, print_function
__metaclass__ = type
DOCUMENTATION = r'''
---
module: service_facts
short_description: Return service state information as fact data
description:
     - Return service state information as fact data for various service management utilities.
version_added: "2.5"
requirements: ["Any of the following supported init systems: systemd, sysv, upstart, openrc, AIX SRC"]
extends_documentation_fragment:
  -  action_common_attributes
  -  action_common_attributes.facts
attributes:
    check_mode:
        support: full
    diff_mode:
        support: none
    facts:
        support: full
    platform:
        platforms: posix
notes:
  - When accessing the C(ansible_facts.services) facts collected by this module,