TimeSystem leaks the Libevent API, so it would be better if it were loss broadly visible.
TimeSystem adds only one API: createScheduler, which is used only in the Dispatcher. So there's no need for all the Envoy code to be aware of it and the Libevent API.
It is necessary to expose the Libevent API, however to the SimulatedTimeSystem. This may become easier to reason about when we have an abstraction over Libevent.
Per discussion with @mattklein123