Support for usernames (not uniqued or checked yet), log in/out messages, message timestamps

I'm not keen on recompiling this list of identified sockets every time someone connects - especially since we'll want some way to quickly figure out which socket has a specific username.

Assuming that socket pointers are sane, I think I'd prefer to just store a global key-value object where keys are names and values are sockets, then use that in the emit below.