Pre-RFC: `{BTreeMap, BTreeSet}::drain` with a range

Over the days, I have been tried figuring out a way to solve the problems with drop-on-drain, and found the following idea. Unfortunately, I'm afraid it is nearly impossible to find a reliable way to make sure the clean up work being done before the destruction of any RAII objects.