Use caching for linguist results

Zeger-Jan van de Weg requested to merge zj-linguist-ruby-sidecar into master

Linguist used to run by shelling out. This meant that each run a new ruby VM was spun up, and the result was read and interpreted. This had a couple of downsides;

  1. Each time the ruby VM started it had to require Rugged, which is slow
  2. Colours needed to be loaded, which at times broke and prevented Gitaly from booting

This MR moves the operation to the sidecar, and also uses the linguist caching mechanism to speed up the RPC.

Merge request reports