Add an error handler to the HTTP request object.

Otherwise, argo throws a fatal exception and exits if there is any
trouble connecting to the target server. The error handler just
returns a 503. It'd be better to have a way to add some
exception-handling logic there instead.

Also, move the setup of the HTTP "agent" so that it is done once
and shared for all requests, rather than created new every time. That
way we should actually get some more connection pooling.