Hmmm, this is true.  Having `SetRoot` free the old root plus its children is opening ourselves to double free errors =(

Hmmmmm, perhaps the semantics of this function are too nuanced.  If we really want a `SetRoot` function, what exactly would the use cases be and in what scenarios would people use it in?  If the only real use case is creating a document from scratch, then I think we might be better off not including this function and just using `AddChild` instead.

The cost of creating a robust and useful `SetRoot` function seems to be rather high for functionality that we haven't quite proven to be all that useful yet (and that has a workaround).