Return an async_result from add_auth_async

Even though ZK closes the connection when auth fails (though the session is
still valid!) we should have add_auth_async be consistent with the rest
of the async calls by setting an exception on the AsyncResult object.

We still switch the state to KeeperState.AUTH_FAILED afterwards.

Added two tests (auth passes and auth fails raising AuthFailedError as
expected).