o_Tuple At Putting Can Destroy
open override fun o_TupleAtPuttingCanDestroy(self: AvailObject, index: Int, newValueObject: A_BasicObject, canDestroy: Boolean): A_Tuple
Answer a tuple with all the elements of object except at the given index we should have newValueObject. This may destroy the original tuple if canDestroy is true.
We want to balance having to clone the entire basis tuple with having to build a lot of infrastructure to deal with the alteration. We keep it fairly simple by creating two subranges spanning the left half and right half of this subrange. We then recurse to update the tuple in the half containing the index. Eventually the pieces will be small enough that a subrange won't be produced, and another implementation will be invoked instead to deal with a small flat tuple.