Detect and close dead client connections

Previously, consumers were never being removed from the event source since the range over `consumer.in` would block. This uses a select statement and an arbitrary 5min timeout to close connections if they have been inactive and remove them from the event source.