DOMTokenList: Update serialization algorithm on add()/remove()

We should re-serialize the whole token list even if an operation didn't change
the list items.

* blink::ClassList
 This class doesn't use DOMTokenList::tokens_, and usually uses
 ElementData::class_names_. We can't update it before setAttribute().  So this class
 creates SpaceSplitString for mutation on the fly.

* blink::RelList
 This class doesn't use DOMTokenList::tokens_. MutableSet() should refer to
 rel_values_ instead.

* blink::DOMTokenList
 For other DOMTokenLists, we can mutate tokens_ directly.

BUG=600964

Review-Url: https://codereview.chromium.org/2895903002
Cr-Commit-Position: refs/heads/master@{#474229}
13 files changed