Add package hash information in generated CycloneDX SBOMs
### Proposal
Add package hash information in generated CycloneDX SBOMs.
### Motivation
Cryptographic hashes provide a way to validate data integrity. Most package
managers support a form of package integrity validation using
a hash. The [CycloneDX specification] and [PURL specification]
each support the inclusion of package hashes, so that any modifications
to a component can be detected. For example, it's possible for an
SBOM to have `pkg:npm/express@1.0.0` listed. This could refer to the
package hosted on `npmjs.com`, but it could also refer to a separately
hosted _patched_ package.
The addition of a hash allows a person or service reviewing the SBOM
to verify this by checking the checksum against the "known" hash of
the package+version.
<!--Consider adding related issues and epics to this issue. You can also reference the Feature Proposal Template (https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Feature%20proposal%20-%20detailed.md) for additional details to consider adding to this issue. Additionally, as a data oriented organization, when your feature exits planning breakdown, consider adding the `What does success look like, and how can we measure that?` section.-->
<!--Label reminders
Use the following resources to find the appropriate labels:
- Use only one tier label choosing the lowest tier this is intended for
- https://gitlab.com/gitlab-org/gitlab/-/labels
- https://about.gitlab.com/handbook/product/categories/features/-->
epic