Refactor scheduler to use a single command channel.

This simplifies passing commands to the main scheduler loop.  Without
this the number of channels for the individual commands would only grow.