fix(queues): Global config used everywhere

This patch modifies the queues code to use manually instantiated configs
rather than the global config. This will allow for more flexibility in
configuring components. For example, the up-and-coming sharding feature
can construct configs based on the shard catalog rather than the local
INI file. Also, this change will make testing easier.

Also in this patch, the SQLite driver schema was consolidated into
one place in preparation for the sharding patch. With this change,
controllers can be instantiated and used independently, since all
the tables are set up when the driver is loaded, not in a piecemeal
fashion as before.

Change-Id: I1afa8ab8c7e6dd9a017f4a9e3a3b1fadbeb32806
Implements: blueprint remove-global-config
Closes-Bug: #1239725
Use stevedore instead of importutils

Current `Pipeline` implementation uses importutils for loading stages.
This patch replaces the usage of importutils with stevedore so that it
is possible to have external stages as well.

Implements blueprint storage-pipeline

Change-Id: I3d1c48ddde0721db38f467f7b723d34ea2033b86
Merge "Use stevedore instead of importutils"
Return a consumer function instead of consuming

Former implementation was called consume_for and used to consume the
whole pipeline. This implementation returns a callable function instead
which makes it possible for wrapped methods to have a `method` keyword
and to control / reuse the consumer.

Implements blueprint storage-pipeline

Change-Id: I8d7ad43028b5615b24f06ca1e116e35e5ab6a145
Validation for messages returned by queue/stats

This patch updates the  queue/stats tests to include validation for message age
(0 <= age <= message_ttl_max), href & created time.

Tests Bug: #1237620

Change-Id: I7c6dfd10b94c8ac64247d687ac31783522b8f3d0
Merge "Validation for messages returned by queue/stats"