Use live words to estimate heap size in memory retention calculations
This MR makes memory retention math use live words instead of live blocks. This can make a difference when using the nonmoving collector.
See the Note [Statistics for retaining memory] and/or the commit message.
While testing this I added some HasCallStack info to the test for T23221 to make it easier to debug and I've put that in a separate commit
Resolves #23397 (closed)