In the case of a network failure it is not possible to discover which,
if any, of the messages in a given batch were inserted before the
outage occurred.
This patch works around the problem by inserting messages in two
phases:
1. Assign all messages a "batch" or "group" ID and insert them
2. Once it has been confirmed that *all* messages were inserted
correctly, finalize the transaction by clearing the batch
ID, 'g', from the messages just inserted.
Message listing and counting were also modified to ignore any
non-finalized messages, i.e., those messages that have a non-null
'g' value.
Orphaned messages will eventually expire and be cleaned up as
usual via the TTL index.
Closes-Bug: #1270263
Change-Id: I9de61cdfdf6dfcbe07ef76bf63a293091f087663