Use single GCM server
Get relays from PeerNAT. Use Collapse key in GCM
Request the buffered messages at the unreachable device
Send buffered messages using two buffer objects only

Since the number of buffer objects in a message is limited (content
slots are limited to 8), we need to compose larger buffers to be able to
send them in a single message. Thus, we create two buffers: one holding
all messages concatenated and one holding all sizes of the messages in
the first buffer. The sizes are used to decompose the large buffer into
the messages.

There's also a test case for the proof of concept.