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 there's a great advantage in phrasing this as a decorator - we mostly use decorators
for methods where we can generate the handler in advance, but we're not actually doing
that in any cases here.

I'd be inclined to add:

    func (h *handler) authenticate(req *http.Request) error

and call it directly.