Better time formatting by using an explicit format

The default format QDateTime::toString uses isn't very good
Also make it possible for translators to change the format
Display timestamps using the application locale

Reverts configuration of timestamp formats via translation files.
Formatting of timestamps and such should completely move from core to client at
some point.
Fixes #1199
Only chop \r\n instead of trimming all whitespace

Any whitespace in front of the protocol's \r\n is part of the message
and thus should not be trimmed. Fixes #1197
Parse wallops (fixes Bug #1185)
Strip newlines from 'reason' fields in settings

These messages are sent to the server verbatim, which means anything
after a newline (which can be pasted into a QLineEdit) would be used as
a command.
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.