Fixed AttrValue::from_tokenlist indexes

The following issues were found:
 - Single concatenated spaces were indexed as a single token;
 - Last token, if not followed by an HTML space character, was ignored;
Implemented Attribute's tokens() iterator
Use AttrValue::tokens() in Element::has_class()
Implement DOMTokenList.contains
Cleaned DOMTokenList code duplication
Mark WPT tests as FAIL due to lack of DOMTokenList.toggle

For now, these tests are being handled in test_element_classList.html
until DOMTokenList.toggle gets implemented.

Created issue #3138 to track DOMTokenList.toggle implementation.
Merge pull request #3061 from brunoabinader/domtokenlist

Implement DOMTokenList.contains; r=Ms2ger