add core-icon* and port examples

This also adds extra config info to the code generator, and refactors it to allow more stuff if we need it. The new option allows it to omit an import from the generated code.

A few TODOs here:
* .jsElement.callMethod pattern appears in a few places. I'm going to look at fixing methods generally.
* we might want to add HTML import redirects for the HTML files in packages/core_elements/src/core-icons/iconsets/, but I'm not 100% sure yet.

R= @sigmundch @justinfagnani 

There are some things dart:js can do to make core-ajax work in Dart, like allow transferring any native type. It's a pretty big change to dart2js though, so who knows how it'll be received. I'll work on that with the team asap.

That still doesn't cover things like core-list and other collection heavy elements, where performance it a big motivator. At this point, I think a suffix might not be a bad idea. I know I'm more tolerant of long names than you, but I think a suffix has a few nice qualities: 1) It keeps the core-* branding. 2) It relates that the only difference is that its in dart. 3) If we get code-completion for custom tags it'll be suggested along with the normal core-* elements (that's for tags, for imports we'll have to have nice html import completion that doesn't rely on pure prefixes). 4) It scales to multiple prefixes, and allows for a tool-friendly 1-1 mapping.