Allow constructing an invalid IrcSessionInfo
Add IrcSessionInfo::channelModes(A|B|C|D)
Fix IrcSessionInfo::channelModes()
Add IrcModeMessage::Kind { Channel, User }
Add IrcModeMessage::isReply()
Introduce IrcChannel/Model & IrcUser/Model
Revert "Introduce IrcChannel/Model & IrcUser/Model"

QAbstractProxyModel & QSortFilterProxyModel are in QtGui... :/

This reverts commit a1c8fe46bd58e7dd4a0209c431303bfab3675c45.
Re-introduce IrcChannel/Model & IrcUser/Model
Fix IrcUserModelPrivate::addUsers() when not sorting by activity
Start preparing changelog for 2.2.0 [ci skip]
IrcProtocol: fix memory leak
Docs: add missing IrcMessage::Motd/Names enum values
Add bool IrcChannel/UserModel::contains(name)
Add IrcChannel::messageReceived() & IrcChannelModel::messageIgnored()
IrcChannelModel: make sure to use unique title instead of name
Example client: add a user list
Example client: add completer
src.pri: enable QtNetwork for convenience
Fix IrcChannelModel::messageIgnored()
Fix IrcChannelModelPrivate::addChannel()