CollectionSync: reduce calls to Collection::parentCollection()

Calling parentCollection() is expensive (even though Collection is implicitly shared),
because of Entity::Entity(const Entity &other) which is very ineffective (but probably
not possible to fix without API changes), so we try to reduce the number of calls to
minimum by calling it once and then storing the parent collection in a variable.
CollectionSync: further optimize findMatchingLocalNode()

This patch makes findMatchingLocalNode() return QPair of LocalNodes, first of
the QPair being the matching local node and second being matching parent node.
This means that we save one call to findMatchingLocalNode() for each pendingRemoteNode
in processPendingRemoteNodes(), which makes a notable speed improvement. We have
to find the parent node in the first call anyway, so instead of then calling
findMatchingLocalNode() again to get parent LocalNode for current RemoteNode,
we get both in single call.

This reduces inital sync of over 50 000 Collection to ~10 minutes. Incremental
sync takes about a minute for the same amount of collections.
Monitor: don't try to compress new notifications

The server has performed all compressions already (currently that means it only
compressed Collection Modify notifications), so there's no need to iterate over
the (potentially very long) queue of notifications again in each client.