Improve SkyElement.

- Don't stamp the template repeatedly when attaching.
- Don't use __proto__
- Store the template in an external map instead of a property on the prototype.
- Add a created() callback.
- Allow creating a SkyElement with no associated <template> or ShadowRoot.

R=rafaelw@chromium.org

Review URL: https://codereview.chromium.org/715203002