Add keepSub metadata to prevent glitch in JS with DCE

The glitch: when you used a partial in a WidgetLoop, you never explicitly
call new() on that partial, you only use Type.createInstance(Partial,[]);

Because of this, the DCE system in Haxe would eliminate the new() function,
and it would create the class, but it would never call super() or init()
and so the collection would be empty etc.

Painful bug to fix
Add more type safety to WidgetLoop

At the expense of more syntax, but probably worth it