[x] Test that messages delivered on invisible threads don't mess up chat message loading (Profile.upsertMessages will probably mess things up as it upserts even when the chat messages was not loaded)
[x] Queue messages when not connected rather than silently throwing exception. (Edit: this is already done automatically while persisting messages to DB with state=NEW).
[x] Reconnect automatically while service is running (but give up after x-many retries or no Android internet conn available).