Added new class AdBlockMatcher that holds the cache of
all subscriptions with rules.
This moves the matching logic from AdBlockSubscription into
separate class.
It also fixes issue that CSS exception rules weren't able to
affect rules from different subscription.
Instead of downloading only the essential half of EasyList,
user can now choose to download and use the full list.
This restriction is still here because the other half of EasyList
is full of domain restricted rules that are using RegExps in our
implementation, and thus being slow.
Even empty QRegExp can occupy a lot of space in memory, which can
grow into a big number with tens of thousands AdBlock rules.
QRegExp is now allocated with new, and only when really needed.
- improved performance with not using regexps when not necessary
- added support for element hiding even with domain restrictions
- almost all types of rules are supported now
* exceptions are only some special cases when rule has
unssuported options (part of rule after $ character)
* those rules are ignored
- you can add subscriptions in AdBlock dialog or with
abp: scheme links
- however, AdBlock rules are not yet optimized for performance
so you shouldn't add too much subscriptions
performance optimizations will come in next commits
- support for element hiding is still yet to come too
closes#266