move websocket emitter to its own file
add event hub

this will be used for SSE. provides nonblocking writes and subscribing
multiple times with arbitrary event indexes.

[#80512764]
scheduler emits events via event hub

[#80512764]
remove websocket emitter
fix nil event being emitted when hub closed

[#80512764]
add /builds/:guid/events endpoint

streams the given build's events via server-sent events. allows
re-attaching from an arbitrary event id.

[#80512764]