Make authentication errors easier to debug.

* Return error messages along with error objects.
* Put in logging for authentication success and error.
* Break out AuthenticationWebViewListener to allow subclassing.