Allow for alternate metadata storage backings.

The shelf metadata implementation seems slow, but rather
than throwing it away, add an sqlite3 backed storage.