Revised dispatcher run()

Changed dispatcher run() to use action() to action any tasks including
flush(), this allows other tasks to be added to the "while not
self.stop" loop just by inheriting action() and using super.