Optimize torrentRow a bit

The problem is that torrentRow() does linear search over the list of all
available torrents. So it doesn't scale well for large number of
torrents. Removing the copying of QString from linear search
inner loop, speed up it considerably.

The proper solution should be using hash table instead of linear search.
This require more radical changes in TorrentModel and may be done in a
separate commit.
Emit TorrentModel::dataChanged() signal only for specific rows, not for the entire table

In commit b50d733 TorrentModel moved from a periodic refresh, to using
postStatusUpdate(). In this transition I forgot to remove emition of
dataChanged() signal for the entire table.

According to my measurements this commit reduce CPU usage of qbittorrent
by a factor of 3:

Before:
   Total wall clock:                                      97.07s
   CPU time:                                              21.77s
   - Time spent in TransferListDelegate::paint():         14.60s
   - Time spent in TorrentModel::forceModelRefresh():      1.44s
   - Time spent in TorrentModel::stateUpdated():           0.02s

After:
   Total wall clock:                                      96.13s
   CPU time:                                               6.68s
   - Time spent in TransferListDelegate::paint():          2.63s
   - Time spent in TorrentModel::forceModelRefresh():     <0.01s
   - Time spent in TorrentModel::stateUpdated():           1.73s

As it is seen the time spent in painting is reduced by a factor of 6 (14.60->2.63) at
the cost of slightly increased time of notifications that model is
changed (1.44->1.73). The next commits attempt to address this issue.
Call updateTorrentNumbers() once per every model refresh, not once for every row changed

Torrent numbers were recalculated on every dataChanged() signal. The commit 2a53cb0
greatly increases the number of dataChanged() signals.

Before commit 2a53cb0:
    Total wall clock:                 97.069s
    updateTorrentNumbers() time:       0.033s

Commit 2a53cb0:
    Total wall clock:                 96.132s
    updateTorrentNumbers() time:       0.179s

This commit:
    Total wall clock:                 95.535s
    updateTorrentNumbers() time:       0.047s

After this commit the time of updateTorrentNumbers() is (almost) back to
the level that was before commit 2a53cb0.
Split transferlistsortmodel into .h and .cpp
Merge StatusSortFilterProxyModel into TransferListSortModel

I thought merging all 3 sort-filter proxy models into one should
speedup dataChanged() signal. As turned out this is not the case. The
time difference is within inaccuracy range, so this doesn't affect
performance.

But I still think it is good to merge them into one proxy model as it
simplifies code.
Merge label filter into TransferListSortModel

This also fixes a bug that when label filter contains special symbols
from regex, the label filter may match torrents with multiple different
labels.
Now user-created labels "all" and "none" works as regular labels