Move variables in socketengines

Move timespec to DispatchEvents() in kqueue, there is no reason for it to be a member variable
Rename SocketEngine::AddFd() and DelFd() to AddFdRef() and DelFdRef()
Update SocketEngine::CurrentSetSize in AddFdRef()/DelFdRef()
Move socketengine stats into a new class
Change all socketengine methods to be static
Queue changes in socketengine_kqueue and submit them as we poll for new events
Call DelFd() and SetFd(-1) from SocketEngine::Close(EventHandler*)
Store the EventHandler* in the kevent/epoll_event/portev struct

This removes the need to call GetRef() for every socket in DispatchEvents()
Replace DummyExtItem with a flag in Extensible
m_sqlauth Allow the client certificate fingerprint to be used in the SQL query

Idea by @m4z
m_operjoin Remove duplicated code
Wait for the manager bind to come back before sending search in LDAP modules
Remove redundant null pointer check from m_ldapauth
Remove support for advertising the SSL ports in RPL_ISUPPORT.

- No other IRC servers implement this.
- No IRC clients I can find support this.
Return a Membership* from get_first_visible_channel() in cmd_who and pass that to modules
Move GetPrefixChar() from Channel to Membership
Move GetAllPrefixChars() from Channel to Membership
Add ModeHandler::IsParameterMode() and MC_PARAM
Add ParamModeBase and ParamMode, change all parameter modes to inherit from ParamMode

- Type of the extension used to store data is a template parameter
- The extension is automatically unset when the mode is unset
- Handlers inheriting from ParamMode have to provide OnSet() and SerializeParam(); may optionally provide OnUnset()
- Transparently handle the case when OnSet() modifies the mode parameter
- Remove Channel::custom_mode_params map; ask the mode handlers to serialize their parameters instead