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.

Yes, it was getting too long.
This is my preferred way to organise parameter lists that are too long (it
mirrors the way we lay out data initialisation blocks too)