Add a first pass of a class descendant invalidator, and a containing RuleSetAnalyzer

This allows us to (for some rule sets) only recalculate the elements
necessary when changing the class on an element, rather than then
entire subtree.

It's the first in a sequence of CLs to continue refactoring logic into
RuleSetAnalyzer, and expand the scope of targeted invalidation.

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

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