Track repository pushes as audit events
What does this MR do?
Tracks repository pushes to projects at the audit_events table behind the repository_push_audit_event feature flag.
This feature flag will remain disabled by default until we have a chance to tackle https://gitlab.com/gitlab-org/gitlab-ee/issues/7865, which is already scheduled for %12.4.
Note that this MR doesn't handle any major refactoring, but avoid adding more things to the AuditEventService (which is already doing a lot). Instead, it moves specific push audit logic to RepositoryPushAuditEventService.
Also important to note we're not tracking Wiki changes here.
At this MR we create the structure to be able to insert into audit_events table in batches, asynchronously with a Sidekiq worker.
Issue: https://gitlab.com/gitlab-org/gitlab-ee/issues/1411

