Upgraded apns protocol to the most recent version and added basic error checking

My attempt to improve the apns module.

I upgraded the protocol to the newest version [1] and added some basic error checking. The previous version was fire and forget so it was very hard to figure out problems, if any. Apns has this less than desirable behavior that the notifications following a notification with an error are not sent [2] (#43 is probably related to this).

There's no code implemented to work around this right now but the basics are there. APNSServerError.identifier is the index of the notification that triggered the error so notifications after that index were also not sent.

When enabled in the configurations (it's not enabled by default) error checking blocks for the configured time (float in seconds) hoping to get an error from apns. This isn't optimal but a better solution is complex and probably outside the scope of a django module [2].

[1] https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW4
[2] http://redth.info/the-problem-with-apples-push-notification-ser/