[interp] reclaim stack fragments when not used. (#32022)
When a requested frame size doesn't fit in an already allocated stack fragment, we instead allocate another, larger fragment.
When doing this we missed to free the existing stack fragment, and in combination with a second problem (`current->next` not being cleared when unused) it can accumulate to a lot of unused stack fragments and in worst-case to OOM, as it happened on Linux corlib xunit tests.
Thanks to Jay for tracking it down.
Co-authored-by: Bernhard Urban-Forster <bernhard.urban@xamarin.com>