feat(mongodb): Partition data across multiple databases

This patch causes data to be partitioned across multiple databases in
order to reduce writer lock contention. The "queues" collection is
isolated in its own database, while the messages collection is partitioned
across several other databases. The number of partitions is configurable.

For example, if the number of partitions is set to 4, these databases
will be created in MongoDB:

    marconi_queues
    marconi_messages_p0
    marconi_messages_p1
    marconi_messages_p2
    marconi_messages_p3

Implements: blueprint mongodb-multidb
Change-Id: I399f4a39e5377a381aef489b046bc14155ccb75b
fix(proxy): forward marconi headers

Proxy uses the `requests` library to dispatch requests to
multiple marconi servers.  When the result comes back, update
the proxy response headers with the marconi responses.

Change-Id: I151580f174f1a0fc1edca23b43bb7256bcf568fe
Merge "feat(mongodb): Partition data across multiple databases"
Merge "fix(proxy): forward marconi headers"