Realtime (behind a feature flag)

This PR reenables the original "realtime" features, but behind a feature flag that is disabled in production. This will enable us to work on improving the streamer in small pieces without blocking production deployments until this work is completed.
I think the storage should be dict-like. If it's not, it should be more clearly not. In your test code you even use a dict _as_ the storage, yet here `get` doesn't have the same signature as `dict.get`.

The settings in the registry should not change after the application has started. For your implementation of `get_client` maybe skip this whole SettingsStorage class and just write `storage = {k[10:]: v for k, v in request.registry.settings.items() if k.startswith('h.feature')}`.