Use gnutls_rnd instead of gcry_randomize on newer GnuTLS versions.

Also, fix a bug where eval() caused compile errors.
Merge pull request #685 from SaberUK/master+gnutls-rng

Use gnutls_rnd instead of gcry_randomize on newer GnuTLS versions.
Disallow remote /MODULES for non-opers.
Allow multiple allowmasks in link blocks, #679
Fix a few issues

- Rehash notices
- Modes in CAPAB
- GetTargetAndAction() not being static in m_callerid
- Loading custom configuration files using --config. (@SaberUK)
- ServerConfig::Read not using std::endl. (@SaberUK)
- Out of date comments in opers.conf.example, issue #624
m_cap Convert capability names in CAP REQ to lowercase before processing them

Requested in #686
Convert some code to use std::string and C++isms.
Convert a few things which have been missed to WriteNotice.
Move stuff around a bit:

- Create FileSystem class:
  * Move ServerConfig::CleanFilename to FileSystem::GetFileName.
  * Move ServerConfig::ExpandPath to FileSystem.
  * Move ServerConfig::FileExists to FileSystem.
  * Move ServerConfig::StartsWithWindowsDriveLetter to FileSystem.
- Move FileReader to fileutils source file.
- Move UserManager::DoBackgroundUserStuff source file.