Use document.registerElement if compatible and available

#46 

Native `document.registerElement` support will be used if the component can be registered as a native custom element and if it is supported.