Start drafting higher-level API functions

This adds a `onNewEvent` high-level wrapping function, which takes a
zulipclient and a callback and executes the callback over each new event
as it comes in (looping indefinitely).