Store a Vector of DescendantInvalidationSets instead of decomposing in StyleInvalidator

Instead of copying all the classes, ids, tagnames and other bits as we
encounter invalidation sets walking down the tree we can just store a
Vector of invalidation sets and ask each one if it invalidates a specific
element.

This simplifies the code and also makes it so that when adding new features
the invalidation sets we don't need to change the StyleInvalidator.

I also added some out of line destructors and removed the DescendantInvalidationSet.h
#include from RuleFeature.h so that when working on the invalidation set code the
rebuilds can be smaller. In the future we should also remove the StyleInvalidator.h
#include so you don't need to rebuild the entire world when changing this system.

R=ojan@chromium.org, rune@opera.com

Review URL: https://codereview.chromium.org/225573003

git-svn-id: svn://svn.chromium.org/blink/trunk@171319 bbb929c8-8fbe-4397-9dbb-9b2b20218538