Use strings as the type for DOM elements

This makes ReactDOM a simple helper for creating ReactElements with the string tag as the type. The actual class is internal and created by instantiateReactComponent. Configurable using injection.

There's not a separate class for each tag. There's just a generic ReactDOMComponent which could take any tag name.

Invididual tags can be wrapped. When wrapping happens you can return the same tag again. If the wrapper returns the same string, then we fall back to the generic component. This avoids recursion in a single level wrapper.
PS. I also imagine we have some potential for improving compression here by mapping to say `createDOMDescriptor.div(...)`, etc instead, which I imagine could be further improved by also using mangled the names. But it would certainly not be mind-blowing.