feat(views): Separate WebChannel

Do you want this to be a helper object or a base object that each of the others extends? (I like the latter, FWIW). One detail: the name of the event may differ depending on the channel.