Move dynamic_reference and related classes to dynref.h
Seperate ModeReference into ChanModeReference and UserModeReference
Replace hardcoded mode letters, part 2

This changes all remaining Channel::IsModeSet() and Channel::GetModeParameter() calls to use ModeReferences for modes that were created by other modules or the core
Move SetNoticeMask(), FormatNoticeMasks() and ProcessNoticeMasks() from the User class to the snomask modehandler
Replace hardcoded mode letters, part 3

This changes most remaining User::IsModeSet() calls to use ModeReferences for modes that were created by other modules or the core
Get rid of enum UserModes and mark User::modes as private
m_ojoin Stop hardcoding +Y, move global vars into a class, move initialization code into init()
Enable the LINK snomask from m_spanningtree, remove unused FLOOD snomask
Rewrite SnomaskManager::SendMessage() and Flush(), split code into functions
umode_s Rewrite ProcessNoticeMasks() and remove a few related useless functions
m_spanningtree Cleanup TreeServer and TreeSocket construction/destruction
m_spanningtree Change the type of TreeServer::ServerName to std::string
Remove a ton of duplicate and obsolete code from configure.

- Add the data and log paths to dumphash.
- Always exit with EXIT_FAILURE on error.
- Always replace the old config.h with out new one.
- Clean up the ./configure --help message slightly.
- Install dhparams.pem into the conf directory on GnuTLS as well as
  OpenSSL.
- Only show the users InspIRCd Git revision when building from Git.
- Remove a check for MinGW (we have proper Windows builds).
- Remove a check for FreeBSD 4 (released in 2000).
- Remove a ton of pointless tab-indented comments.
- Remove a ton of duplicate or unused variables.
- Remove the check for stdint.h (always available on TR1 compilers).
- Remove the $writeheader argument from writefiles (always 1).
- Remove the following %config options:
    - DESTINATION (not used, always set to BASE).
    - EXECUTABLE (always set to inspircd).
    - OSNAME (duplicate of SYSTEM).
- Remove support for checking whether -extra modules are up to
  date (if the user is installing they won't have any -extra
  modules installed).
- Remove SSL generation messages (genssl provides these).
- Replace inappropriate uses of printf with print.
- Replace is_dir with -d from the Perl stdlib.
- Replace resolve_directory with rel2abs from the Perl stdlib.
- Rewrite getrevision to be more compact, cache the revision and
  return 'release' on non-Git builds.
- Use consistent messages for all tests.
- Use tput to clear the screen in a portable way.