m_spanningtree Accept legacy JOINs from 1202-protocol servers

2.0 accepted JOIN and some pseudoservers might use it
m_spanningtree Translate user mode changes done via FMODE by 1202-protocol servers to MODE
m_spanningtree Drop support for changing user modes with FMODE

This is useless with uuids
Set SSL options to sane default and enfore server cipher preferences

Original PR #856
core_user Inherit CommandNick from SplitCommand, only handle it for local users
core_user Deduplicate code that calls the OnUserRegister hook
Move calling the OnUserPreNick() hook and the restrictbannedusers check from core to cmd_nick (core_user)
Remove now needless User::ForceNickChange()

Change call sites to call ChangeNick()
Deduplicate code in User::ChangeNick()
Get rid of irc::strings (assign()) in User::ChangeNick()
User::ChangeNick() cannot fail if the new nick is the uuid, document this and rely on it
m_spanningtree Replace manual string building of outgoing commands with CmdBuilder where possible
m_spanningtree Add optional expected nick TS parameter to SVSNICK

Drop SVSNICK if the expected nick TS is present and it does not match the user's nick timestamp
m_spanningtree Fix fake direction detection for commands
m_spanningtree Extract logic that finds the source user for an incoming command into a function
WIP: Various improvements to configure.

- Clean up various minor sections of the code.
- Improve compiler detection.
  - Check the CXX environment variable inside find_compiler instead
    of doing it separately.
  - Use a test file instead of checking for version output. This
    ensures we are using a working compiler.
  - Pipe the output through run_test which makes debugging problems
    considerably easier.
  - Detect Xcode versions of Clang properly by returning the LLVM
    version number instead of the Xcode one.
- Remove OpenSSL and GnuTLS detection plumbing.
  - This will soon be the job of modulemanager.
  - This did not work in non-interactive mode unlike --enable-extras.
- Add the --gid configuration option.
- Rework the question flow in interactive mode.
  - User is no longer asked detailed questions unless they want them.
  - Socket engine questions have been removed.
- Automatically enable non-interactive mode if STDIN or STDOUT are not
  a tty.
- Fix OpenBSD builds spamming warnings about system headers.
- Add Perl module for console related code.
  - Move prompt methods to this module
  - Add methods for printing errors and warnings easily.
  - Add colour code helpers and switch all code to use them.
- Rename configure cache file to .configure.cache to avoid 2.0 files.
- Disable configure cache file in non-interactive mode.