traverseNode should be using index looping rather than key looping.

Using key looping is not appropriate for a [NodeList](http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-536297177), it should be using index looping.

Key looping on a NodeList interface will also include the `item` and `length` members, which surprisingly has not created any other issues.

fixes #927