Handle push disconnections and reconnections more reliably (#11831, #11922)

Client-side:

* Call onOpen() also after a successful reconnection
* Reliably call onClose() and try to reconnect after disconnection
* Don't try to reconnect if !isApplicationRunning() after push
* Queue messages while trying to reconnect (state CONNECT_PENDING)

Server-side:

* Implement AtmosphereResourceEventListener.onDisconnect()
* Push marked as pending until client reconnects (if ever)

Change-Id: I1783eb72eb7005b07cae786d8ec8371da3903108