Q module: Add join-on-invite option.

Use case: On QuakeNet you can /msg Q CHANLEV #chan <yourself> +j to
be invited once you authenticate. Anyone known on the channel (mode +k)
is able to set/unset chanlev +j for themselves.

Signed-off-by: Anders Bergh <anders1@gmail.com>
Q module: Don't enable the UseCloakedHost option by default.

On QuakeNet's ircd you can't unset user mode +x once set. But loading
the Q module will set it immediately, possibly requiring a reconnect
if you don't want to use a cloaked host.

Signed-off-by: Anders Bergh <anders1@gmail.com>
Merge pull request #524 from anders/q-invite

Q module: Add join-on-invite option.
Merge pull request #525 from anders/q-nocloakdefault

Q module: Don't enable the UseCloakedHost option by default.
Argh, fuck it. Rename fixed (pointer) versions of OnMode to OnMode2
Revert "Q module: Don't enable the UseCloakedHost option by default."

This reverts commit a7e8775efe507a980261af915ab0a3fac2e73a91.

Existing setting for existing users (who didn't do SetNV) should not change
Thanks to fred for reporting it

Reopen #525
Q module: Store default NVs on module load.
Q module: Don't cloak host on first module load while connected to IRC.
Q module: Add web config.

Move Cloak() from the Set command to SetUseCloakedHost() so that the
web config can use it also.
Merge pull request #526 from anders/q-nocloakdefault

Q module: Store default NVs and better default host cloak behavior, web page
webadmin/add channel: Correctly handle channel names

The CChan constructor makes sure that the channel name begins with a valid
channel prefix. Thus, this could change the name of the resulting channel.

When you edited an irc network which already had a channel "#foo", were
connected to IRC (so ZNC knows which prefixes are valid) and added a channel
"foo", this would lead to a problem:

Webadmin checks and sees that there is no channel "foo" yet. Webadmin creates a
new CChan instance for "foo". The CChan constructor notices that "f" is not a
valid channel prefix and instead calls itself "#foo". Then,
CIRCNetwork::AddChan() would see that this channel already exists, delete the
given channel and return false.

However, webadmin didn't check this result and would continue changing settings
on an already destroyed CChan instance.

Fix this by checking if the channel exists after CChan had its chance to mess
with the channel name. Also handle failures from CIRCNetwork::AddChan().

Fixes #528.

Signed-off-by: Uli Schlachter <psychon@znc.in>
controlpanel: Check if adding a new channel succeeded

Signed-off-by: Uli Schlachter <psychon@znc.in>
Apply query buffering patch