internal/charmstore: add OpenCachedBlobFile method

This will be used to serve both icon.svg and README (and potentially other
similar endpoints in the future).

We also move serveDiagram into a new file, v4/content.go, without any
other changes to it, in preparation for the other new methods.

This seems an unusual way to organise parameters. Is the line too long otherwise?