Do not enable SO_LINGER on our sockets

Using this option allowed close() to block for up to a second

Thanks to Shamsdeen and Rix for their assistance that made this fix possible

Fixes issue #445 reported by @shaggie76
Fixes issue #494 reported by @Rixcho
Close listening sockets regardless of the return value of shutdown()
m_kicknorejoin Minor improvements

- Ignore remote users
- Remove expired items in one pass
m_kicknorejoin Limit time to 30m by default

In the current implementation we only expire entries when someone joins, without a limit it was possible to make us practically never remove entries and consume (a tiny amount of) memory for each entry until the mode was removed/parameter was changed

The default limit of 30m is chosen to not surprise people when they upgrade. If you need to prevent rejoins for more than a minute then you should set a (timed)ban instead

Config option is available to change the limit (2.0 only)
m_kicknorejoin Store and compare uuids instead pointers

Fixes the off chance scenario where we disallow a join because a previously kicked user has quit and the User who is trying to join happens to be allocated at the exact same memory location
Fix m_ssl_gnutls and perhaps some other things on Windows by recognizing WSAEWOULDBLOCK
m_callerid Fix bookkeeping error introduced when unserializing callerid_data

This also fixes a memory leak that didn't occur naturally but was triggerable by remote servers

Thanks to @SimosNap for the report
m_callerid Ignore duplicate entries when unserializing callerid_data
m_spanningtree Fix IS_LOCAL() check in OnRehash handler
m_callerid Allow messaging yourself while +g regardless of the ACCEPT list
m_ident Invalidate cache after changing User::ident
Fix uuids getting truncated in the nick hash in UserManager::AddUser() if nickmax is < 9
Immediately stop processing whenever we detect and handle a RecvQ overrun

Thanks to @SimosNap for the report and cooperation
Don't crop the channel name if it's too long in Channel::Channel()

...and especially don't use the shortened name in one place and the original in another

Having different <limits:maxchan> values on the same network is not supported
m_permchannels Workaround for alphabetical module initialization order

Read database after all modules have been inited
Add exception logging

Fixes #485 reported by @gholms
Log some internal errors on DEFAULT loglevel instead of DEBUG, log detected errors in m_callerid
m_filter Fix memory leak on unload
m_filter, m_rline Remove rlines and filters when the regex engine changes or becomes unavailable
m_rline Switch to OnUserRegister hook to disconnect banned users earlier
Add config option to disable somaxconn range() check