feat(sqlalchemy): add shards controller

This patch focuses on providing the shards controller for sqlalchemy.

As a bonus, a decorator is added that flags all methods that handles
all methods that raise a connection error.

The sqlalchemy driver passes all unit tests for the shards
controller. The initial suite is running on the sqlite engine.

A few general fixes have been applied:

- shards listing unit test now uses characters for names rather than
  numbers as strings to avoid sorting variations between storage
  engines
- cache.get_cache no longer takes a configOpts object

Change-Id: I7400884244be94f7600a5fb489b38c7058d36b31
Partially-Implements: blueprint: sql-storage-driver
feat(sql/catalogue): add catalogue controller

All unit tests passing.

Change-Id: I8871bfa162ab53bae5cecde956206978551b0554
Partially-Implements: blueprint: sql-storage-driver
Merge "feat(sqlalchemy): add shards controller"
Merge "feat(sql/catalogue): add catalogue controller"
Updated from global requirements

Change-Id: If75f151c4ffcd1c9cddb07d85c75242bc379b18c
Add an sqlalchemy storage to Marconi

Implements blueprint sql-storage-driver

Change-Id: I66452e1936646ca11366c574b6185b5e0badfdef