httpbakery: error handling, redirection, explicit discharge

We use a common pattern for error responses
and make use of the errgo and httpjson packages.

We make the Do method aware of the possibility
that the user might be directed to visit a web page
to complete authentication.

We add a Service.Discharger method to allow the
creation of discharge macaroons without necessarily
entering through the discharge HTTP handler.