Add event creation library and implement in scheduler.

I suppose I can remove. I just though people would be annoyed that there's a watch.Mux that they can't access.