Add event creation library and implement in scheduler.

Declaring an interface that provides *only* the methods you use is good go style, not just for testability. StartRecording would still have to take a client argument even if I didn't declare it as an interface, so it's not making the interface any uglier-- bullet 2 is not true.

GetEvents is a helper function because I found myself writing that set of assertions all over. I think it's legit to test event emission, because we're going to build higher level behaviors that depend on events being emitted; if you break that, you'll eventually break the cluster, so it needs to be tested. I can maybe see people wanting to process their local events, so this will save that use case some code, too.

StartLogging is the way it is to allow sending events to: testing.T.Logf, testing.T.Logf, glog.V(X).Infof, glog.Infof, glog.Errorf. It's probably more normal to take an io.Writer, but we can add that later if needed--that doesn't address my immediate use case of getting events logged in tests for debugging.