Update objects instead of deleteing when creating new domains

When a new domain is created and we need to shuffle objects around to
maintain the invariant that domains never conflict with dns objects,
update the existing objects to fit into the new tree instead of deleting
them and then recreating them.

We also want to run the build scripts in a transaction to attempt to
shield it from seeing the shuffling we are doing.