Buffer message documents when enqueuing them, in lieu of streaming

This patch modifies the pipeline for the message post operation
to use list comprehensions in place of generators. This simplifies
some existing logic (e.g., retry handling) and sets us up nicely
for input validation. It should also be a little bit faster than
the previous approach, at the expense of increased memory usage.

Note that the SQLite driver was not modified (YAGNI).

Change-Id: Iae5f7ceaf09f775afc4a4944e0c626d2f40a6554
Implements: blueprint buffer-messages