Add EventSource to the public API

Also fixes EventSource to not start sending output the moment we construct it but wait until we start sending data.

cc @PVince81 @DeepDiver1975 @MorrisJobke