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.

Can you add a comment to say why you don't want to close the blob if some other  error happens?