fix(mongodb): Marker generation creates a bottleneck under heavy load

This patch changes markers so that they are generated using a per-queue
side counter. A heuristic is used to mitigate a race condition. Due to the
new semantics, partial inserts are no longer possible due to collisions,
which ended up simplifying the retry logic for posting messages.

As a consequence of this patch, the last message posted no longer needs
to remain in the queue indefinitely, rendering marconi-gc unnecessary,
and so it has been removed.

Also, since the mongod GC worker runs once a minute, the queries no longer
filter out expired-but-not-yet-gc'd messages; on average, a message may
live more than 30 seconds passed it's expected lifetime, but I do not
think that this will harm or complicate any application building on top of
Marconi, practically speaking. That being said, it is worth calling out
in documentation.

Closes-Bug: #1218602
Change-Id: I34e24e7dd7c4e017c84eb5929ce37ad4c9e5266a
perf(mongodb): Combine project and queue message fields

This patch merges the message and queue collections' project name and
queue name fields into a single 'p_q' field, named to denote the
compound nature of the scoped queue name string.

This should reduce index complexity, making for faster inserts and
finds. This hypothesis obviously needs to be verified during the
review process for this patch.

Change-Id: I3da09806ad50c2d79f1f0c03bee68f1cc4ee787d
Implements: blueprint api-perf-tuning