add support for oping a whole channel with /op *
refactor out mode-applying into a separate method
support '*' as a target for modes
add irssi's wii as a default alias
consistency++
Remove unused enum
Move inline keywords to the definitions

Makes the header a bit cleaner.
Refactor SignalProxy, network and protocol code

Until now, SignalProxy also contained the protocol implementation and
handled the network data transfer. Besides being an architectural nightmare,
this also made it impossible to work on a new protocol.

As a nice sideeffect, the code size of SignalProxy shrunk by more than 30%.

This commit does the following:

* Provide a common abstraction for internal (mono) and remote connections,
  so we can remove the special casing for mono clients in the SignalProxy.
  This should also make it easier to bring back remote capabilities to the mono
  client in the future.

* Move the networking code into RemoteConnection, which also acts as an abstraction
  layer for the current and future core/client protocols.

* Move the protocol-specific code into LegacyConnection.

* Introduce explicit protocol message types (as opposed to QVariantMaps). This gives
  us type safety and allows for a cleaner and more efficient handling inside SignalProxy.
  Also, I finally got to use templates \o/

Note that the handshake/auth code still needs to be abstracted, so for now the
LegacyConnection is still used directly in (the awkwardly mis-named) CoreConnection
and Core for reading/writing their data during the init phase.
Consolidate protocol messages in one namespace

Rather than defining the various messages as nested classes in SignalProxy,
RemoteConnection and in the future even more locations, have them defined
within a single namespace (and file, protocol.h).
This should make it much easier to see at a glance what kind of messages
Quassel sends, and thus help with protocol implementations.
Allow compilation against Qt < 4.7 again

Looks like I recently introduced the use of some QDateTime stuff that appeared
in Qt 4.7. Let's use the old way of calculating the lag then if built against older
Qt...

Oh, also this fixes that we would show double the lag.
Yearly bump

It's 2013, baby!
Refactor Cipher related things.

Instead of using a hash with set keys, set the key on the relevant
  CoreIrc{User,Channel}'s cipher member.
Let the cipher clear its own key (with appropriate checks elsewhere)
Instantiate a new IrcUser when necessary (a query with someone who does
  not share any channels with us means there is no IrcUser for the target
  until he says something)
Add support for DH1080 key exchange

Adds a KeyEvent and handlers, as well as a command (keyx) to initiate
and act upon a key exchange.
Use QCoreApplication::arguments() for genversion

This prevents issues with locales and unicode paths.
Fixes #1177
Add codec blacklist for UTF-8 detection

ISO-2022-JP is valid UTF-8, which means this codec needs to bypass the
auto-detection.
Bump CMake version

If I recall correctly, Tucos had figured out that we need 2.8.1 now.
Rename Internal-, Remote- and LegacyConnection to -Peer

While I'm not tooo happy with the word "Peer", I couldn't think of another one
that fits their purpose better. "Connection" was certainly less correct, and
we have so many different connections in the codebase that it got way too confusing.

At least, while Peer might not be a perfect match, it is consistent with how we always
called that in Quassel (and they still inherit from SignalProxy::AbstractPeer and have
been doing so for years!).
Fix SASL auth with Freenode

Looks like Freenode adds a trailing space to its CAP ACK reply, so Quassel
would hang after we don't trim incoming messages anymore.

I don't particularly like the startsWith() workaround, but I guess we'll need
a more capable parser anyway, should we support more caps in the future...
Fix issue with "Topic set" message

Yeah, those parens can be confusing.
Simplify CTCP parsing by default

Rather than adhering to the CTCP 'specification', reply only to single
CTCP messages without text around them. All messages not fitting the
requirements are simply displayed in the buffer. The old behaviour can
still be enabled in the settings dialog.

Fixes #1130