Separate node-related classes into their own files.

* HTMLElement (was HTMLElementNode).
* HTMLComment (was HTMLCommentNode).
* HTMLDocumentType (was HTMLDocumentTypeNode).
* HTMLTextNode.
* HTMLTreeEnumerator.

Bonus:

* Cleaned up the HTMLDocumentType interface.
* Cleaned up some nearby HTMLDocument interface.
* Rename tree traversal tests, they just test the enumerator.
* Consolidate serialization into HTMLSerialization.[hm].
* Delete HTMLMutability.h. Everybody can mutate!
Fix compiler flag ignoring unused parameters.

Went ahead and deleted all instances of `__unused` too.
Consistently and more easily use StringIsEqualToAnyOf.

* Use it everywhere we're checking for a string among multiple candidates.
* Drop requirement for trailing nil. (Still supported though.)
* Bonus: reformat multi-line lists into one long line.
Use a dictionary to represent attributes on elements and tag tokens.

Turns out we don't really need to care about attribute namespaces, so we can
simply use a dictionary.

We'll use an ordered dictionary to ensure the order doesn't change between
serializations. (Which it probably wouldn't anyway, but NSDictionary itself
doesn't make that guarantee.) This also preserves the attributes' insertion
order, which is probably what consumers expect.

This change required some rearchitecture:

* Stop asking tag token to handle duplicate attributes.
* Stop tokenizer from messing with HTMLAttributes after adding them.
* Selectors reach for attributes using subscripting.
Simplify and tidy HTMLNode API.

* Change -[HTMLNode childNodes] array to KVC compliant -children ordered set.
* Add -[HTMLNode document] to reach up to the hosting document.
* Change -[HTMLNode parentNode] to -parentElement. The only nodes that ever
  host children are HTMLDocument and HTMLElement. With the -document property,
  the only choice left for a parent is an element.
* -[HTMLNode childNodeCount] is now the KVC compliant -countOfChildren.
* Delete -[HTMLNode objectForKeyedSubscript:].
Tidy up HTMLDocument API.

* Implement -[HTMLDocument seRootElement:] and -[HTMLDocument setDocumentType:]
  and have them update -children.
Remove pointless HTMLParser initialization methods.

Nobody uses HTMLParser but us, it's just a waste of code.
Move some headers around.

* Extract HTMLNamespace and HTMLDocumentQuirksMode into their own files.
* Remove HTMLNode.h from umbrella header.
Tidy up HTMLSelector API.

* Remove unused `parsedString` parameter. The idea was to fill it in with a
  canonicalized string representation of the selector.
* -[HTMLSelector string] property (and use it).
* Expose HTMLNthExpressionFromString and use it in tests.
* Expose -[HTMLSelector matchesElement:] and use it internally.
* Clean up HTMLSelectorTests.
Extract HTMLTokenizerState to its own file.
Tidy up documentation comments and formatting.
Clean up build settings.

* Define `DEBUG=1` once.
* Set deployment target for Entity Fetcher to project's OS X deployment target.
Rearrange Utilities folder.

* Entity Fetcher directory was kinda pointless.
Add benchmarking utility.
Fix warning comparing against NSNotFound in test.
Speed up mutating a node's set of children.

See lengthy comment added to HTMLNode.m for an explanation.
Add selector benchmark.

Stolen from WebKit:
https://trac.webkit.org/browser/trunk/PerformanceTests/CSS/QuerySelector.html
(just without the selectors involving groups).
Switch HTMLTreeEnumerator to use primitive HTMLNode children accessors.

Much faster than copying the children set around all day.
Redo HTMLNode children/parent implementation.

* The mutableOrderedSetValueForKey: proxy doesn't work, so I made my own for
  -mutableChildren.
* There's no weird distinction between parentElement and document. Just do a
  straight up parentNode/children, and parentElement and document can reach
  into those properties as necessary.
Bump version to 0.5 and fix podspec typo.