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.