Receipt verification overhaul

# Proposed actions #

 - ~~Treats status code 21006 as valid.~~
 - ~~Handle status code 21007 and 21008. When receive such notifications, switch to the appropriate Apple's receipt verification server apple suggested by the status code.~~
 - ~~Fixed In-App Purchase vulnerability.~~
 - ~~Supports auto-renewable subscriptions.~~
 - ~~Peep into transaction to determine the client/environment.~~
 - ~~Better error reporting. (Based on Error Handling Programming Guide)~~
 - ~~Validate with transactionReceipt in addition to validating with transaction (Allows for transaction receipt to be stored for later validation)~~
 - ~~Unit Tests.~~
 - ~~In Apple's implementation, Apple stores every transaction ID (in user defaults) and check against repeating transaction ID. Currently we implemented 2 blocks (one for checking the transaction ID and the other for saving the transaction ID) with the option to set the default implementation similar to Apple's one. This is not on by default though.~~

# Benefit from the changes #
 - More secure client side receipt verification.
 - Library able to figure out the environment to use during development and production without the developer intervention.
 - Support for auto-renewable subscriptions receipt verification.
 - The library is environment aware and does not requires any preprocessor guard for development and production. The library automatically choose the correct client based on the transaction, and if it is wrong for some unknown reason, it knows how to retry the request with the right client.

# Canceled actions #

 - __Treats status code 21004 as a serious problem by raising an exception.__  
   I decides against it because anyone who tested it and face this problem will already be alert by the failure flow.

# To do #

 - Documentation.
 - Review the code again.
 - Prevents the WWDR intermediate certificate from causing catastrophe issue on expiry. See [Certificate, Key, and Trust Services Programming Guide](https://developer.apple.com/library/mac/#documentation/security/conceptual/CertKeyTrustProgGuide/01introduction/introduction.html)

# Notable changes/points #

 - Removed `_receiptVerificationClient`. Introduce `sandboxReceiptVerificationClient` and `productionReceiptVerificationClient` singletons. Singleton was chosen because of my lack of knowledge of creating a thread safe lazy loading property. I thought through about it. Maintaining a `_receiptVerificationClient` ivar will requires making its get and set thread safety, thus removing it and go for a different implementation seems like a better and simpler choice.
 - The reference implementation that Apple provides does seems like it doing some duplicated actions but it did not though. A explanation of it actions below:
  1. It first compare the `SKPaymentTransaction` and its `SKPayment` matches its purchase info.
  2. Then checks its signature and purchase info is valid.
  3.  After which it sent the receipt to Apple's receipt verification server.
  4. Upon receiving a response. It check if the response receipt matches the purchase info.


# Pending issues #

 - The Security.framework is not optional yet though. The current implementation doesn't seems to work. It seems that the `_SECURITY_SECBASE_H_` is already defined with or without linking Security.framework.
 - The code size have grow from 300+ to 900+ lines. Is there anyway we can reduce the code size?
 - Because we now peek into transaction to determine the client to use, we are deserializing the receipt twice in our operation.

# Food for thoughts #

 - Response from Apple's receipt verification server for [auto-renewable subscription](https://gist.github.com/4187607#file_response_object.iap.ars.json) is different from [non-consumer](https://gist.github.com/4187607#file_response_object.iap.nc.json). But the success block only returns the receipt key. I returns the response object instead of just receipt on success instead.

# Reference #

 - [In-App Purchase Programming Guide](http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction/Introduction.html)
 - [In-App Purchase Receipt Validation on iOS](http://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/_index.html)