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