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 

It's very different. Maybe we can change the APIs somehow to clarify just how different it is.

So, initPolymer returns a Zone, not a Future. If you use .run on that Zone object, it will call your callback synchronously. All it does it make sure that code is in the Zone, so any async operations you might schedule will participate in the dirty-checking Zone.

Polymer.onReady returns a Future. The future itself is already associated with the Polymer Zone, so no need to run it inside the zone. The future is supposed to fire once all initial polymer elements are upgraded.