m_spanningtree Fix routing of unicast messages
m_sajoin Abort and report if the target user is already on the channel

Fixes issue #820 reported by @UselessOper
m_sajoin, m_sapart Support a comma separated list of channels

Issue #818
core_lusers Don't capitalize "local users" and "global users"
Remove WALLCHOPS and WALLVOICES ISUPPORT tokens

These tokens have been deprecated in favour of STATUSMSG for a long time
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.