Support the pure SSH-based LFS protocol for gitlab-shell
## Overview
The [Pure SSH-based protocol](https://github.com/git-lfs/git-lfs/pull/4446) for Git LFS PR was merged in July 2001 and added support to the `git-lfs` client binary. Officially, the functionality was released in [version v3.0.0 (September 2021)](https://github.com/git-lfs/git-lfs/blob/main/CHANGELOG.md#300-24-sep-2021). It adds an alternate method for uploading/downloading LFS objects via SSH which sits alongside the standard HTTP method.
During the clone/push/pull process, if LFS is enabled, `gitlab-shell` uses the `git-lfs-authenticate` command which eventually then uses HTTP to upload/download LFS objects.
To quote [`@bk2204`](https://github.com/bk2204):
> The goal is to have the code fall back to `git-lfs-authenticate` and use the HTTP-based protocol with SSH authentication if the `git-lfs-transfer` binary fails for whatever reason.
Under the covers in gitlab-shell, the `git-lfs-authenticate` command is essentially the HTTP method of uploading/downloading LFS objects. `git-lfs-transfer` is the command for the SSH method of uploading/downloading LFS objects. Since v3.0.0 of the `git-lfs` client binary, it will attempt to call `git-lfs-transfer` and if the server (gitlab-shell in our case) responds positively, it will attempt to use SSH for uploading/downloading LFS objects, otherwise it will fall back to using `git-lfs-authenticate`, which uses HTTP.
## History
https://gitlab.com/gitlab-org/gitlab/-/issues/336618+ was the first issue raised where @KyleFromKitware created https://gitlab.com/gitlab-org/gitlab-shell/-/merge_requests/855+ which kicked things off.
## Proposal
Update gitlab-shell to support the `git-lfs-transfer` Git LFS command.
Part of https://gitlab.com/groups/gitlab-org/-/epics/12508+.
cc @sean_carroll, @derekferguson, @KyleFromKitware, @nhouston, @joe-snyder
epic