Make StorageInterface a Protocol.
We're already using 'StorageInterface' as type annotation where we expect an object that implements the same methods, but it isn't technically correct since these objects aren't an instance of a subclass.
Making StorageInterface a protocol reflects how we already use it, without lying to mypy.
Migrated from D3855 (view on Phabricator)