Geo: Self Service Framework - Package File verification
### Problem to solve
Common data integrity problems with package files:
* The file doesn't exist
* The file changed (checksum mismatch)
* The associated model does not exist (i.e. a project record was deleted)
* Geo only: The file doesn't exist on a secondary
* Geo only: The file changed on a secondary
These problems can arise due to bugs or transient infrastructure problems.
### Use case: Geo DR
Sysadmins need *assurance* of data integrity or at least an indication that data needs to be fixed, in order to trust a DR solution.
### Proposal
* Add service to verify package files on secondaries
* Add service to checksum package files on primary
* Automatically verify package files on secondaries
* Ensure package file checksum on primary
* Track primary package file checksum counts
* Track secondary package file verification counts
* When a primary package file is checksummed, reset verification on secondaries
* Regularly reverify package files on primary
* Add package files checksum and verification progress bars to Geo Nodes UI
* Let admins adjust file verification rate
* Allow verification of files in Object Storage
### What does success look like, and how can we measure that?
### Testing
Please refer to [the testing section of the parent epic](https://gitlab.com/groups/gitlab-org/-/epics/2161#testing)
#### Available Prometheus metrics
* Primary: Number of checksummed files
* Primary: Number of failed checksummed files
* On secondaries: Number of verified files
* On secondaries: Number of failed verification files
#### In `Admin Area > Geo > Nodes`
Each node should display Upload a checksum/verification progress bar using the above data (in GeoNodeStatus).
The [current limitations table](https://docs.gitlab.com/ee/administration/geo/replication/#limitations-on-replicationverification) should look like this:
| Data Type | Replicated | Verified |
|-----------|------------|----------|
| Package files | Yes | Yes |
epic