codeintel: Add Compose to upload store
Created by: efritz
In preparation for https://github.com/sourcegraph/sourcegraph/issues/14826, I found that the API I had proposed earlier was underspecified. This adds a Compose function to the client that concatenates several objects together into one object and deletes the previous ones.
Tests are also updated:
- We now have an S3 and GCS client test
- We had to define interfaces around the libraries that provide only structs (or huge interfaces)
- These are now mockable to prevent regressions of the client usage
Before merging I am going to try this again on a live GCS and S3 bucket to ensure that it works as intended and not just as the client is documented.