Fixed a really dumb deadline mistake.
Merge branch 'threadless_connections' into connection_failure_listener
Well, that was dumb. Let's not put important flow control statements in `assert` statements any more kthx.
Merge branch 'threadless_connections' into connection_failure_listener
Since all sequence number changes happen in the event loop, the sequence number can just be a plain old `int` instead of an `AtomicInteger`.
Moved a check inside an event loop `Runnable` for memory consistency.
Fixed a race condition where notifications could get lost if their write succeeded after the connection had handled a rejection, but before the connection had closed.
Clear the sent notification buffer after sending unprocessed notifications back to the listener.
Catch NullPointerExceptions and report them as a connection failure cause rather than checking for null and not reporting a cause.
Merge branch 'threadless_connections' into connection_failure_listener
Merge branch 'connection_failure_listener' into drain_retry_queue_before_shutdown_take2

Conflicts:
	src/main/java/com/relayrides/pushy/apns/ApnsConnection.java