Launchpad ingestion to archive endpoint

Wire up launchpad ingestion to charmstore filling out new api/models.
You would not have to do anything more to bubble up the UnauthorizedError - you won't need the http status because the resulting JSON error message will have params.ErrUnauthorized as the error code.

I also think that it will be useful to have this function for the future, as it encapsulates the correct logic for making an arbitrary request to the charm store server.

addPromulgatedCharmURLs could do with some simplification, and this suggestion is trying to help that.