Refactor the surface to be a plain React component

The ART subtree is done in a separate reconciliation pass with a separate transaction. Making it it's own standalone reconciler.

I use a new feature in ART that allows you to pass an existing element instead of ART generating it for you. This avoids the hacky stuff we do to switch out React's HTML tag.