More closely model listen/notify in memory backend
More closely model listen/notify in memory backend

The other backends process JSON that comes through the channel. We were
putting the instance in the collection instead of the backend so its
behavior diverged from the other implementation.

This change introduces a Bus object to represent an in-memory bus that
abstracts the communication between running instances of Switches. This
more closely models how communication happens between instances using
a real-world backend.

jpignata/switches