- Alright, now the MVP of this thing should be pretty much done!
- You can now join and leave groupchats, and the fact that you've
done this is relayed to other users in said groupchats.
- You can also send messages to groupchats and have them get
received by other users in the groupchats.
- History replay and join/part messages still needs work though.
- This sets us up for storing JOIN and PART messages (for groupchats)
in the database.
- These are stored as 'system messages', which are essentially
somewhat hacky objects with various reference fields that
are filled in depending on the type.
- A set of generic functions are used to transform some message-like
database object into an IRC message to be sent down the wire.