message input: autocomplete=off, placeholder
don't allow guest messages
drop message.handle; require message.user_id
presence only handles logged-in users
require login
refactor presence table
update presence handling code
fold EventSource code into RoomSync class
refactor connection handling for stream
create column presence.read
specify event type
inline the event handling function
track "unread" state for the room