Change the send_message trigger time

With the current method through the tornado_apns project, we send message to
the APNS immediatly when the connect done. And we do a connect-disconnect
circle at every time we send a message. But the apple's document said "APNs
treats rapid connection and disconnection as a denial-of-service attack."
So, when we have large messages to send, we'd better keep a connectiong alive
for a long peroid.
I use the tornado_apns in my project like below:
Create a APNS instance
connect to the server for inition
Use send_notification when we have a send request
Add send message func to send a pure json payload

Add a new func in gateway server, so we can use a pure json payload instead of
using Payload object to build a payload

	modified:   apns.py
Change apns api to V2

Use the V2 apns api, add apns response check

	modified:   apns.py
Add callback to **connect()**  method

	modified:   apns.py
Modify the apns-send to V2

1. modify send_notifition() to API V2
2. modify apns-send to new method
Merge branch 'dev-payload-json' into dev

Conflicts:

	apns.py
Change send_notfication to APNS api V2

rt

	modified:   apns.py
Merge branch 'dev-payload-json' into dev
Change tornado gen.engine to traditional callback

change using traditional callback from tornado coroutine
modify unit test to fit APNS API V2

	modified:   apns-send
	modified:   apns.py
    modified:   tests.py
Change to ANPS API V2

1. Change the implemention to APNS API V2
2. Change the connect to Long TCP connect

	modified:   apns-send
	modified:   apns.py
	modified:   tests.py
Add feedback service provider

	new file:   apns-feedback
	modified:   apns.py
BUG FIX self.buff in Feedback_Connection

rt

	modified:   apns.py
Merge branch 'feedback-service'

Merge Feedback service func

	new file:   apns-feedback
	modified:   apns.py
BUG FIX: check the stream if alive

1. Change the is_alive() method back to a private state, not use
stream.closed() func.
2. Catch read_till_close exceptions

	modified:   apns.py
RM connect_and_response() send_notification_json()

1. remove connect_and_response() method, move it to the client caller
2. remove send_notification_json ande merge to send_notification()

	modified:   apns-send
	modified:   apns.py
Modify connection timeout

1. raise error on connection timeout
2. use IOStream.close() instead of socket.close()
3. add set_close_callback() method in APNsConnection

	modified:   apns.py
modify _disconnect to public method disconnect
Modify APNsConnection __del__ method

1. close the stream when it exist in APNsConnection destruction
2. add __del__ method to GatewayConnection and FeedbackConnection

	modified:   apns.py
Modify _feedback_callback method's return

Modify _feedback_callback method in FeedbackConnection, changing the return of
time from datetime to unix timestamp

	modified:   apns.py
Modify unittest

	modified:   tests.py