add ability to emit a progress event

@aboudreault @antoviaque we have a specialized need to track when students view a video. It's a bit confusing the publish(self, "progress", {}) as people might interpret the code to mean progress inside a video (elapsed time).