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.