This supports everything except the RenderStrategy/hidden/unmount type stuff, while I'll add in a later commit.