Replace NodeMap with a NodeList class that embeds list() and item()
methods that were previously part of AbstractNode as child() and
children().
Start to simplify NodeList (will need to be merged with NodeMap before
more progress can be made).
Made NodeMap and associated classes easier to understand before merging
with NodeList.
Merged NodeMap into NodeList.
Performed the same type of renaming on NodeItem as was previously
performed on NodeMap to make the code easier to comprehend.
Moved the item() and items() methods from AbstractNode to NodeItem.
Got rid of the specious NodeItem.items() method.
Merge pull request #580 from BladeRunnerJS/make-node-map-and-node-item-comprehensible

Make node map and node item comprehensible