Use new TreeEntryFinder RPC to reduce Gitaly IO

Problem to solve

We discovered another N+1 that hits Gitaly TreeEntry via the RelativeLinkFilter: https://gitlab.com/gitlab-org/gitlab-ce/issues/58657. When a blob is loaded with many relative links, TreeEntry is called for each link to scan the URI type.

We are implementing a new RPC Add support for gitaly#1608 (closed) to improve performance but the Rails application will need to be updated to use the new RPC.

Further details

There are multiple paths that hit Gitaly TreeEntry, and https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/25706 did not cover all cases. This merge request covers another common use case.

For users using Gitaly on top of NFS, accessing the Git data directly via Rugged may be faster than going through than Gitaly. A feature flag rugged_commit_tree_entry was added in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/25896 to activate the Rugged method to mitigate performance problems for some customers.

Proposal

Implement changes to support the new RPC

Links / references

Edited by James Ramsay (ex-GitLab)