Improve UserManager::QuitUser() and related code

- Make operreason optional; NULL means same as quitreason
- Remove User::quietquit, it is now handled internally in spanningtree
- Send snotice about quitting remote users from spanningtree
m_spanningtree Remove vector from TreeServer::QuitUsers()
Remove useless ULine() checks
Introduce Server class

- Replaces std::string server in User
- Replaces InspIRCd::ULine() and SilentULine()
Move server description field from TreeServer into Server; remove OnGetServerDescription hook
m_deaf Simplify logic
Unset all extensions and the topic when lowering TS on a channel
Automatically register and unregister mode watchers
Add m_starttls and remove it from m_ssl_gnutls, which allows it to work with both openssl and gnutls