Add hooks for Streaming API
I started off wanting to fix #1469 (closed) and ended up down this rabbit hole to refactor streaming. This greatly simplifies logic for dealing with streaming topics in components. The work is not complete yet, but I'm at a stopping point.