Launchpad ingestion to archive endpoint

Wire up launchpad ingestion to charmstore filling out new api/models.

UPDATE

QA instructions:

1. Make sure your dependencies are up to date, run make reps
2. Run mongodb. I use system mongodb
3. Run charmd using go run: go run cmd/charmd/main.go cmd/charmd/config.yaml &
4. Run charmload using go run: go run cmd/charmload/main.go --staging=true --show-log --logging-config='&lt;root&gt;=TRACE'
5. Optionally omit the --staging=true option to use production launchpad.

And, when I follow these instructions on a clean utopic system, I get same errors mentioned by @bac and @urosj so I'm keeping this blocked until I resolve them.  No idea, yet, why it WFM on a different system.
This doesn't seem right to me - we need to calculate the hash *before* uploading the charm - we're getting an arbitrary  hash. I suggest that we archive to a temporary file before uploading it. I think it might be worth factoring all that out into a separate function.