simplify the concept of cmds:

A cmd is now a callable with some extra attributes and methods:
cmd.args:       args to be passed to the cmd
cmd.kwargs:     kwargs to be passed to the cmd
cmd.join:       specifies whether the thread should be joined
cmd.check:      check if the cmd should be executed
cmd.preexec:    returns the time that should be waited before calling
                cmd
cmd.postexec:   returns the time that should be waited after calling cmd

defined BaseCmd that provides this features, plus a decorator for the
check-method to count up all calls that were made to the cmd.

For the more advanced configuration there is the Cmd-class that inherits
from BaseCmd...