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' of github.com:relayrides/pushy into connection_failure_listener