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.
Ah, I'd missed the WWW-Authenticate side-effect. But that's trivially dealt with
by passing w to h.authenticate.

I still think the non-callback approach is somewhat cleaner in this instance.
Having h.authenticate as a standalone method means that it's applicable
whatever the type of the handler (we might want authentication on methods
that don't refer to a charm/bundle id, for example).

Although I like higher order functions where they add real value,
they do make for slightly more obfuscated code - it we're just
saving an if statement, as in this case, I'm not sure it's worth it.