Have HTMLCollection::item() return an Element as per specification

Have HTMLCollection::item() return an Element instead of a Node, as per the
specification:
http://dom.spec.whatwg.org/#htmlcollection

This was made possible by adding a NodeType template parameter to the
CollectionIndexCache class. Both LiveNodeList and HTMLCollection have a
CollectionIndexCache but the former deals with Nodes and the latter deals with
Elements.

There is no Web-exposed behavior change. This is mostly about using stricter
typing on the native side and have our IDL match more closely the
specification. This also avoid a few unnecessary isElementNode() checks in our
code.

R=esprehn, adamk, haraken

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

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