[docs] Use subitem in new nav generation

(cherry picked from commit 995d0e588bf245cb585951f21dfcc3862a48f55a)
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.
Merge pull request #2287 from sebmarkbage/stringelements2

Use strings as the type for DOM elements
ReactDOMComponent should not accept children for void elements