Add basic HTTP authentication to archive POST/DELETE.

The credentials can be stored in the charmd configuration file.
Abstract out the authentication logic in a decorator.
Created a card for the DoRequest refactoring.
I'm not sure that the type we pass into the exposed API should be the
same as that we use internally. I see why you've made it part of the
params package (because internal/charmstore can't depend on
charmstore itself), but perhaps it's better just to define the internal
and external parameter types separately. They may well acquire
different fields from each other in the future.

Also, perhaps better to pass around by value rather than by pointer,
so there's no ambiguity about whether it's required or not.