Implement IRCv3.2 capability negotiation
Always send CAP LS, similar to ZNC and HexChat. IrcEventCap checks
returned capabilities, queuing up desired ones until all replies
finish, then requests each capability one-by-one. This prevents an
error with one capability from blocking all of them.
See http://ircv3.net/specs/core/capability-negotiation-3.1.html
And http://ircv3.net/specs/core/capability-negotiation-3.2.html
Modify SASL authentication to only happen if present in capability
list. If it's not supported, log an error in the status buffer and
continue connecting anyways.
See http://ircv3.net/specs/extensions/sasl-3.1.html
And http://ircv3.net/specs/extensions/sasl-3.2.html