IDL compiler: KeepAttributeAliveForGC

KeepAttributeAliveForGC is already supported by the IDL compiler.
This CL just adds test cases (including for the usual is_keep_attribute_alive path),
and refactors the code slightly to make it more generic.
(Going out of alphabetical order b/c code already there but untested.)

There is only one actual use case of this:
Source/core/html/HTMLTemplateElement.idl
[KeepAttributeAliveForGC] readonly attribute DocumentFragment content;

Normally this attribute would not be kept alive, b/c DocumentFragment is a DOM Node type;
these are not kept alive, with the explanation being:
"Node lifetime is managed by object grouping."
There is no explanation of why this extended attribute is used on this one attribute.

Docs:
https://sites.google.com/a/chromium.org/dev/blink/webidl/blink-idl-extended-attributes#TOC-KeepAttributeAliveForGC-a-

BUG=239771

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

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