refactor so shifting siblings left after a prune happens after the node is pruned.

This allows for a unique constraint on lft, rgt, scope_columns.

Adding this constraint helps to ensure the tree cannot be corrupted,
particularly by race conditions when inserting root nodes into a tree
concurrently.