Pass the NSError object to the listener to help with fault diagnosis on Game Center login.

Currently in Game Centre, failure callbacks such as ``playerLoginFailed()`` are invoked without any context, so it's impossible to know what went wrong. Passing the ``NSError`` can help with logging.

This PR also provides a meaningful error when the 'failed' callbacks are invoked for an unauthenticated player.