##### SUMMARY

In several comments on this PR, it was noted that the 2.8.x apt package facts has a large performance regression: https://github.com/ansible/ansible/pull/56008#issuecomment-496931379

The reported difference is about 1m30s  vs 8s for a fixed version.

Looking at the fixed version versus 2.8x and devel code, it looks like the issue is that creating an empty apt package cache takes a measurable amount of time.  Doing that in a loop for each package adds up significantly.  This can be fixed by reusing the empty cache rather than recreating a new one every single time.  I asked for people to test with the following change and they report that it fixes the problem:
``` patch
     @property
     def pkg_cache(self):
-        if self._cache:
+        if self._cache is not None:
             return self._cache
 
         self._cache = self._lib.Cache()
         return self._cache
```

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
package_facts.py

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
2.8.x devel
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
N/A
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
An Ubuntu or Debian managed machine

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml

```

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

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
Package facts gathered in under 10s

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
Package facts gathered in over a minute.

version_added: "2.5"
requirements:
    - For 'portage' support it requires the `qlist` utility, which is part of 'app-portage/portage-utils'.
author:
  - Matthew Jones (@matburt)
  - Brian Coca (@bcoca)
  - Adam Miller (@maxamillion)
'''
EXAMPLES = '''
- name: Gather the rpm package facts
  package_facts:
    manager: auto
- name: Print the rpm package facts
  debug:
    var: ansible_facts.packages
'''
RETURN = '''
ansible_facts:
  description: facts to add to ansible_facts
  returned: always
  type: complex
  contains:
    packages:
      description: list of dicts with package information
      returned: when operating system level package manager is specified or auto detected manager
      type: dict
      sample_rpm:
        {
          "packages": {
            "kernel": [