m_spanningtree Throw an exception on protocol violations instead of returning CMD_INVALID

Catch CoreExceptions, log and close the link in OnDataReady()
m_spanningtree Add ServerCommand::ExtractTS() to convert string to raw TS

Throws a ProtocolException if the input is invalid
Change the OnNamesListItem() hook to return ModResult

Return MOD_RES_DENY to exclude the user from the NAMES list
Document parameters and return value for the OnNamesListItem() hook
Remove redundant IS_LOCAL() checks discovered by static asserts
Add support for generating DANE TLSA records to genssl.
Document the Membership and the Invitation class
Remove needless checks from Invitation::Find()
m_ldap: time out LDAP queries

Set LDAP_OPT_NETWORK_TIMEOUT to 0 in m_ldap to prevent the asynchronous
library calls from blocking

Fix memory leak of pending queries when m_ldap is unloaded
Update core_stats.cpp

Make this consistent with other "Permission Denied" errors.
m_passforward: Don't forward password if the connect block required a password to connect
Replace the configure templating system with something better.

A large amount of this code can be removed when buildtool is done
as we will not need to worry about the differences between BSD and
GNU Make.
Prefix all definitions in config.h to avoid potential collisions.
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.