better Movement swiching

* Introduced new "ClassSwitcher" component that uses a PublishSubscriber
channel to switch between different classes
* changed PublishSubscriber callback to use the channel value as
parameter (as normally the value is polled in the callback)
* changed PublishSubscriber getPublishedChannels to getAllChannels
* restored PublishSubscriber behavior that publish sets only the value
if it creates a channel