Move caching out of LiveNodeListBase and into a new CollectionIndexCache class.

This improves Bindings/node-list-access.html's score by 4-5% on my Linux
desktop. This is due to CollectionIndexCache being templated, which gets rid of
isLiveNodeListType() branches in hot code paths.

Further separation between LiveNodeList / HTMLCollection can be done but I kept
this patch minimal to facilitate review.

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

R=adamk, esprehn

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

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