add recursive tree traversal via childNamedRecursive() and childrenNamedRecursive()

This makes it possible to do deep-level traversal such as `getElementsByTagName()` would.

```html
<a>
  <b>
    <c id="1" />
  </b>
  <c id="2">
    <c id="3" />
  </c>
</a>
```

JS:

```javascript
a.childNamedRecursive('c') // -> c#1
a.childrenNamedRecursive('c') // -> [ c#1, c#2, c#3 ]
```