gitaly-lfs-smudge: Implement support for running as a long-running filter process
Originally, Git only ever supported smudging the contents of a single blob by piping that blob to a filter process directly. This meant that for every blob that needs converting, we have to spawn a full process. Naturally, this doesn't scale well when repositories grow and when they have many blobs that do need converting. Git has thus introduced a long-running filter protocol: instead of spawning one process per blob that needs converting, Git will only spawn a single server and then communicate with that server via pktlines.
Implement support for this protocol in gitaly-lfs-smudge so that we can
start using it in our GetArchive()
RPC.
Closes #4153 (closed)