Separate block allocation from block insertion, so that cbsDeleteFromTree no longer leaves the tree in an inconsistent state if allocation fails.
Simplify the case logic in cbsDeleteFromTree to try to make it clearer.
Explain why cbsDeleteFromTree can't fail when it's called from cbsFindDeleteRange.
Clarify the logic in cbsInsertIntoTree to match cbsDeleteFromTree.