Add project support to `unsigned_commit_shas` for SSH commit signatures
The following discussion from !214739 should be addressed:
- [ ] @vyaklushin started a [discussion](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/214739#note_2941569574):
> **issue**: I found this code that only supports commit shas without projects.
>
> ```ruby
> # Find commits that are lacking a signature in the database at present
> def unsigned_commit_shas(commit_shas)
> return [] if commit_shas.empty?
>
> signed = by_commit_sha(commit_shas).pluck(:commit_sha)
> commit_shas - signed
> end
>
> ```
> [source](https://gitlab.com/gitlab-org/gitlab/-/blob/4907e0aa7aaf25d35bf7bf4bc802575481cc4a34/app/models/concerns/commit_signature.rb#L29-35)
>
> It's used in `BranchHooksService` to create commit signatures after the git push.
>
> ```ruby
> signature_types
> .map { |signature| signature.unsigned_commit_shas(commit_shas) }
> .reduce(&:&)
> ```
>
> [source](https://gitlab.com/gitlab-org/gitlab/-/blob/4907e0aa7aaf25d35bf7bf4bc802575481cc4a34/app/services/git/branch_hooks_service.rb#L199-205)
>
> It shouldn't be a problem right now, since `CreateCommitSignatureWorker` doesn't support `Ssh::Commits`.
>
> ```ruby
> # Instantiate commits first to lazily load the signatures
> commits.map! do |commit|
> case commit.signature_type
> when :PGP
> Gitlab::Gpg::Commit.new(commit)
> when :X509
> Gitlab::X509::Commit.new(commit)
> end
> end
> ```
>
> [source](https://gitlab.com/gitlab-org/gitlab/-/blob/4907e0aa7aaf25d35bf7bf4bc802575481cc4a34/app/workers/create_commit_signature_worker.rb#L30-37)
>
> But it sounds like a follow up issue. WDYT? :thinking:
issue