ArenaAllocators don't play nicely with ArrayLists

A while ago, we looked at ArenaAllocators and why you should view their free as a noop. The short version is that, in order for a free or destroy to actually return memory to the arena, two conditions need to be met: The freed memory must have been the last allocated memory, and The freed memory must have been allocated on the Arena's current node (which is an internal detail of how the Arena…