Better method of updating the user list

Instead of constructing the user list from scratch at regular intervals,
we now construct it only when joining the lobby. Each subsequent join,
part, or rename then adds or removes elements from the user list, rather
than constructing it from scratch.

This change should significantly reduce client lag.