Improve caching of the tree query on the frontend
Description
In !190487 (merged) we set the tree query fetchPolicy to 'no-cache' on the frontend because the id field for a Blob is not guaranteed to be unique (see #388656 (closed)).
We should ideally fix the root cause on the backend (#388656 (closed)), but we can temporarily work around the issue on the frontend by setting a custom keyFields for Blob type to a different unique identifier on the frontend (example: TreeEntry).
We need to be careful when setting unique keyFields because it may cause frontend issues if the graphql schema where __typename: 'Blob' does not contain this field. This means if we set a custom keyFields for Blob we'll need to check all .graphql schema files where the typename: 'Blob' is used contains the key field.
Edited by Jacques Erasmus