Merge custom-element branch and squash it

Support custom elements
- also allow DI to be used with any custom element (e.g. Polymer elements)

Add examples