Fix numerous topic related encryption bugs

Added a QSortFilterProxyModel that is put behind the various
views that use the topicHistoryModel. When equipped with a
'cipher' object it will begin deciphering encrypted content

Took the decryption for topics out of server.cpp, this caused
decrypted text to get into the model, they are now decrypted
in the cipherFilterModel, and in the channel messages that go
to ircview. When the cipher is deleted, the topics in topicLine
and in TopicHistoryView return to their encrypted forms. They
remain decrypted in ircview however.

Changed some of the logic in decrypting topics so that when
nothing is decrypted we return nothing, and when something IS
decrypted, we return only the decrypted text, no prefixes. These
prefixes are now added by the cipherFilterModel. The ERROR:
prefix denoting unencrypted text has now been changed to (u) to
be more in line with the (e) for encrypted text, and make it the
same character length, so it's easier to strip later.
Initial commit of nick list model view conversion

Converting the current nick list stuff to model/view.
This involves combining channelnick/nickinfo/nick into one
object, and using a single nicklistmodel per server, and a
single channellistproxymodel per channel to filter the nicks.
Add the new nick models to channel/server and set up the view

I renamed the ChannelNickListProxyModel to
ChannelNickListFilterModel because it does more filtering than
proxying. Then I put the models in channel/server and fixed
a couple of crashes that this exposed. Then I created a
QListView that lives right below the old nicklistview and will
allow me to view the state of both nick lists side by side
so I can know when I've got everything perfect.
Connect model with join/leave/nick setting changes

There are now currently 3 nicklistviews shown: the old one, the
new channel nick list, and the nicklistmodel so that I can
monitor that the nicks are being deleted from the whole model
when they should be. Currently the nicks aren't properly deleted
when you leave a channel, I will have to iterate over all of the
nicks in order to do that, I'm trying to think of a better way.

Numerous bugs fixed, SizeHintRole works now, icons work, away
works correctly, and setting modes for nicks works now.
Remove all nicks from model when leaving a channel and fixes

Added the functionality to remove all the nicks from the channel
when we leave it. This exposed some crashes from some Nick
objects that were being called after they had been deleted.
So, I protected those with some if statements.

Also, I added a delayed reset timer so we don't reset on every
insert, I'm hoping to find a way to fix fastinsert to avoid this.
Worst case scenario, I can switch to using a QMap, but I'll try
a few more things first.
Convert nick completion to use new nicklistmodel

Took the signal that used to go to the channel's nick
completion and connected it to the CNFM's version instead.
Then, I removed the old code.
Refresh channel modes now uses the nicklistmodel

In addition to making this minor change I also protected CNFM
from crashes when the source model hasn't been set yet. This
happens in channel because of the odd time the server is set.
Set nicks less active in the model on the timer
Change the get channels list over to the model

The getsharedchannels and getnickjoinedchannels functions were
identical, and getsharedchannels was completely unused. I took
out the extra function, and ported the remaining two.
Change DCC Recipient dialog to use nick list model
Use a QList to manage the positions of the indexes in the views

NickListModel now has a QList holding the pointers so we have
an ordered list that stays consistent and don't have to do
funky stuff whenever the hash might reorder itself.
By having both we can maintain the fast lookup times of all of
the settings.
Fix a crash when a nick is renamed, we were calling this twice.
Fix a sorting bug where the orders were reversed

Both the status sorting and activity sorting were reversed
so the more active and higher status people would be on the
bottom.
Make it so nicks in the model are properly set to away

Also made it so away messages can be set at the same time so
dataChanged is only called once.
Add nick identification to the model functions
Add everything else from inputfilter to the nick list model

Specifically: onlineSince, netServer, netServerInfo
Fix a crash when leaving channels

Removing nicks was causing the hash to rehash and mess up
the iterator, so I had to do everything in removeAllNicks
with erase, which won't cause the it to rehash.
Use one nicklistmodel for all servers

This will make it much easier to do the nicksonline page and any
other things in the future that will require access to all nicks
on all servers.

While I was at it I also switched around the arguments in many of
the functions so it goes in descending order of specificity
e.g. server->channel->nick->property.
Convert serverlistdialog to a model/view

I have done this by creating a servergroupmodel which I will use
for the NicksOnlineModel too. This still requires testing and
has a few bugs and missing features.

The notifyLists were moved inside the servergroups both to match
how they are in the config, and to make it easier to use the
planned servergroupmodel/nicksonlinemodel combo.

Due to that move much of the nicksonline functionality has been
temporarily disabled. It will be replaced in future commits.
Initial commit of the new nicksonline

Completely rewritten to use the new servergroupmodel with
the beginnings of support for MONITOR and WATCH.

Although it sends the ISON commands currently they don't do
anything, and there are some other bugs that prevent it from
working as expected. This is only an initial commit so I'll
fix those as I go along.