Use a real array for Node.prototype._childNodes

This change is a very big performance improvement because it avoids recalculating the "length" over and over.
Calling array methods on an real array is probably a lot faster too.
Node.prototype.childNodes still returns a live NodeList. This NodeList is lazily created to avoid defineProperty (which is very slow) during element construction
Change various API and internal methods to use _childNodes array
Use lastIndexOf instead of indexOf in Node.prototype.removeChild

The fastest method to remove all children of an element is to loop through all its childNodes in reverse,
because this avoids renumbering the array.
Using lastIndexOf makes this removing all children slightly faster: O(n) instead of O(n^2)