use cherrypy.engine subscribe/publish instead of PyDispatcher

also name the events more appropriately after module and such