Labeled storage backend for consensus docs and diffs
As part of legacy/trac#21647 (moved), we need a way to store consensus documents and consensus diffs persistently. The storagedir backend is mostly there, but it lacks a way to store metadata, or to manage reading/freeing/deleting documents on demand.