Issue #604, fix m_dnsbl, broken in accccc212cd4f08a3c5532b1ae7a17e76bac8718
Fix a couple of issues

- Wrong doc for Snomask::GetDescription()
- Incorrect idle time when WHOISing remote users
- String + int = garbage
- Remote MODE commands (user mode changes) being broadcast in addition to being forwarded
- Incorrect revision being shown
Move host cycle logic into m_hostcycle
Accept std::string as parameter in User::ChangeHost(), ChangeIdent() and ChangeName()

Pass the string itself to IsIdent() instead of string.c_str()
Remove virtual User::GetClass() (but keep LocalUser::GetClass())
Rename <connect:nouserdns> to <connect:resolvehostnames>.

This name is more descriptive and avoids a double negative which
could make the name of this setting unclear to non-native speakers.
Use an example server name if <server:name> is not defined.
Warn if the server has no <bind> blocks.
Change the default for <security:customversion> to an empty string.

RFC 1459 says this field is for comments about the version. If the
operator has no comments then we should not show any.
Prevent servers from ulining themselves.

Almost every single case I have seen where this has been done has
been an accident.
Replace range() with min and max arguments on getInt().
Rename <options:moronbanner> to <options:xlinemessage>.

This name is more descriptive of what is actually is used for.
Require privs given on initial join to be in <options:defaultmodes>.
Add <path> keys for all of the compile-time paths.

Also, make all paths in the config relative to their associated
directory. This reverts a change in 2.0 which turned out to be a
terrible idea, especially for system-wide installations.