Switch to std::string::compare() from substr() in a couple of places
m_ssl_gnutls Don't include cap.h

The tls cap is handled by m_starttls
m_ident: Add an option to allow idents of users to still be prefixed with a '~' for connect classes which have disabled ident lookups through the <connect:useident> setting.

Fixes #683.

Some changes by @attilamolnar, original PR #684
Describe <ident:nolookupprefix>
m_ident Make use of the min parameter of ConfigTag::getInt()
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 greater 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 number reported by SocketEngine::GetMaxFds() to be informal

Do not exit if we can't determine it
m_ssl_openssl Remove unused MAX_DESCRIPTORS define
Deduplicate ParseStack::ParseFile() and ParseExec()
Use std::find() in ParseStack::ParseFile()
m_remove Manually forward all REMOVE messages, turn FPART into REMOVE
m_remove Recognize /REMOVE <chan> <nick>

The old syntax is now deprecated

Fixes issue #860 reported by @Shawn-Smith
m_remove Make the protected rank configurable instead of hardcoding it to 50000

Change type of ulevel and tlevel to unsigned int
Document the config options of m_remove
Move pre-kick checks from core to cmd_kick (core_channel)
Change Channel::KickUser() to accept an iterator, add overload that accepts a User

Remove srcmemb parameter