ARC, iOS 6/7, OS X compatibility; error handling; challenges; delegates + methods

All files (including those from third-parties) now use ARC. Many old methods have been updated that were deprecated with the introduction of iOS 6 (and now iOS 7).

The outdated and clunky `NSNotification` System has been removed and replaced with easy to use and deeply integrated Delegate Methods and Completion Handlers. Eight new delegate methods and seven new methods help give full control over Game Center.

Added a new method to retrieve a list of GameCenter Challenges for the current game and player. Added methods to get information about a player. Improved many other methods including scoring and achievement methods. Fixed and added methods to detect the availability of GameCenter.

The demo app has undergone massive improvements, including many interface improvements (converted to storyboards), iPhone 5 support, a new icon, and better GC status reporting.  Reorganized files to remove duplicates. Demo app only supports iOS 5+, but the GC Manager still supports iOS 4.1 and higher. 

Added support for Mac OS X. A new set of GC Manager classes can now be used with Mac OS X applications. A demo app has also been added for OS X to demonstrate usage on OS X.

![interface](https://f.cloud.github.com/assets/2374407/836641/5912a59a-f2f5-11e2-9dd6-ad7ddfc2b6b3.png)

Here is a full rundown of what's new:

<table>
  <tr><th colspan="2" style="text-align:center;"><b>Version 5.0</b></th></tr>
  <tr>
    <td>This update adds support for Game Center on Mac OS X and makes improvements to the iOS demo app. Improvements have also been made to error reporting, challenges, and player data.</br> 
    <ul>
   <li>Adds support for Mac OS X. Use the <i>GameCenterManager Mac</i> folder to access resources for the OS X compatible version of GameCenterManager. This also includes an OS X demo app that works with the iOS demo app.</li>
    <li>Improved Game Center Error Reporting. The <tt>gameCenterManager: error:</tt> delegate method now passes an <tt>NSError</tt> as the error parameter instead of an <tt>NSDictionary</tt>. New <tt>GCMError</tt> constants are provided as error codes in each error.</li>
   <li>Makes improvements to thread management and background tasks - heavy background tasks like syncing to GameCenter (which involve networking, encryption, and file system management) are performed on the background thread and will continue to finish the process even after the user exits the app. </li>
    <li>Fixed bug where the <tt>getChallenges</tt> method would always return <tt>nil</tt>. The <tt>getChallenges:</tt> method no longer returns a value - instead it uses a completion handler and delegate methods.</li>
    <li>Added a new method to retrieve a player's profile picture, <tt>localPlayerPhoto:(void (^)(UIImage *playerPhoto))handler</tt></li>
    <li>Fixed bug where achievements may not sync, esp. after resetting achievements.</li>
    <li>Reorganized code</li>
    </ul>
    <strong>Known Issues</strong> <br /> Resetting achievements causes them to reset on Game Center, but the cache remains locally. This cache eventually causes all achievement data to be uploaded to Game Center.
    </td>
  </tr>
</table>
<table>
 <tr><th colspan="2" style="text-align:center;">Version 4.1</th></tr>
  <tr>
    <td>Fixed bug where Game Center Manager may not submit scores or achievements even when Game Center is available.</td>
  </tr>
  <tr><th colspan="2" style="text-align:center;"><b>Version 4.0</b></th></tr>
  <tr>
    <td>This update makes massive improvements to the flow and performance of code, updates Objective-C compiler and build settings, redesigns the demo app, and adds three new methods and eight new delegate methods.  </br> 
    <ul>
   <li>Removed <tt>NSNotifications</tt> and replaced with delegate methods. This makes integration with current projects easier and faster; it is also more reliable. See the <em>Delegates</em> section of this document for more.</li>
    <li>Improved Game Center Availability Checking and Error Reporting. Now check for the availability of Game Center with the <tt>checkGameCenterAvailability</tt> method. </li>
   <li>Makes improvements to thread switching - now UI tasks are performed on the main thread. Previously they were performed on a background thread for GameCenter. </li>
    <li>In depth error reporting for Game Center errors and availability issues.</li>
    <li>The demo app has undergone massive improvements, including many interface improvements. To eliminate redundancy, the iPad part of the Demo App has been removed - Game Center Manager still works with iPad though. </li>
    <li>Code cleanup and reorganization to make it easier on the eyes.</li>
    <li>Upgrades ARMV6 assembler codegen from THUMB to ARM</li>
    <ul>
    </td>
  </tr>
  <tr><th colspan="2" style="text-align:center;">Version 3.1</th></tr>
  <tr>
    <td>Improved error reporting and reorganized files to remove duplicates. Added a way to retrieve challenges. Converted old demo app files to support iOS 5+ - now using storyboards intead of XIB.</td>
  </tr>
  <tr><th colspan="2" style="text-align:center;"><b>Version 3.0</b></th></tr>
  <tr>
    <td>Added ARC compatibility. All files are now ready to be used with ARC. Many methods have been updated that were depreciated in iOS 6.0. The demo app has undergone massive improvements, including many interface improvements, iPhone 5 support, a new icon, and better GC status reporting. </td>
  </tr>
</table>