misc improvements

see commit comments for details
I didn't add `NodeList` and `HtmlCollection` because of http://dartbug.com/15816 . Reading [the dart2js code of dart:js](https://code.google.com/p/dart/source/browse/trunk/dart/sdk/lib/js/dart2js/js_dart2js.dart#502) those 2 types are not handled.