Move Event stuff into separate file
Rework timer event loop.

Change it to use a time.Timer so that the loop can resume listening to
the same channel.  This means that the loop will be able to handle
future actions without affecting the currently pending event.  This is
necessary to support temoprary events that will be needed for a boost
function etc.
Rename timer to scheduler.

Better represents what it does and avoids naming confusion with
time.Timer.
Rename clockTimer to timer
Rename local scheduler variables.

To reflact the renaming of the type.
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.