Make sure the rootNode of a LiveNodeListBase is always a ContainerNode

Make sure the rootNode of a LiveNodeListBase is always a ContainerNode. This
simplifies the logic inside LiveNodeListBase. It also gets rid of ContainerNode
checks in HTMLCollection / LiveNodeList's traverseForwardToOffset() which are
hot in Dromaeo's dom-traverse.html. This improves the following test's score by
~3%:
- Bindings/node-list-access.html

The only exception was when Node.childNodes is called on a non-ContainerNode.
We now handle this special case separately by introducing an EmptyNodeList
class which inherits from NodeList instead of LiveNodeListBase.

This CL also moves the getElementsBy*() methods from Node to ContainerNode
as they only make sense for ContainerNodes. They are actually exposed to JS
on Element, not Node.

This patch is based on WebKit r158536 by <antti@apple.com>.

R=eseidel, esprehn, abarth

Review URL: https://codereview.chromium.org/132923003

git-svn-id: svn://svn.chromium.org/blink/trunk@165598 bbb929c8-8fbe-4397-9dbb-9b2b20218538