Add capability negotiation support

* Use CAP LS to get a list of supported CAPs from the server
* Send CAP REQ for the CAPs we need, if they exist
* Send CAP END