m_ident Close the ident socket when the object is culled instead of using hooks
m_channames Call ValidateChans() from cull() on unload

This ensures that if ValidateChans() removes everyone from a channel the
channel is added to the cull list at the right time, that is, before the
destruction of objects begin.

The core IsChannel() is less strict than us regardless of our
configuration (for now) but nevertheless this is the correct behavior.
m_channames Remove temporary vector from ValidateChans()
Relax fd bounds checking

We can cope with fds larger than SocketEngine::GetMaxFds() since 3752b3f59d5216d7dc6221a361efc76b9ad2273d
socketengine_epoll Pass a dummy value to epoll_create() that does not depend on GetMaxFds()

From man epoll:
Since Linux 2.6.8, the size argument is unused, but must be greater than zero. (The kernel dynamically sizes the required data structures without needing this initial hint.)
Change the limit reported by GetMaxFds() to be informal; do not fail if we can't determine it