Replace Express.IO/Socket.IO with Express/SSEs

This PR replaces Express-IO and the included Socket.IO event listening implementation with plain ExpressJS and a simple Server-Sent-Events implementation.

I believe Server-Sent-Events are a better fit for this use case, as there is no two-way communication involved, the setup is much simpler than for WebSockets, and there is a lot less happening on the client and server to go wrong.

Additionally, since Server-Sent-Events are simply long-held HTTP connections, it should be trivial to add support in environments that would otherwise not support SSEs or WebSockets.