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.
    // NewServer returns a new handler that handles charm store requests and stores
    // its data in the given database. The handler will serve the specified versions of
    // the API using the given configuration.

I *think* it's better have a separate type for the config that's specific to the top
level package, rather than putting HandlerConfig in params - params is
mostly about parameters to API calls rather than parameters to functions.

I'm open to arguments the other way though.