Adds std.heap.MemoryPool
This is a fast memory pool implementation that can be used to rapidly allocate objects of the same type. It even outperforms the null hypothesis of just leaking the memory using a std.heap.ArenaAllocator.
nice!
TODO: Potentially store all allocated objects in a list as well, allowing to just move them into the free list instead of actually releasing the memory.
Unless there's some drawback I'm not seeing, including a list of allocated items would also be nice for general storage/iteration purposes since one of the benefits you get from an arena is cache locality, and there's a decent chance that if you're using a pool for a particular type that you're also going to want to access those items sequentially rather than randomly, so having that storage would remove an extra step for the user.
If there would be drawbacks to doing this (I suppose ensuring everything is kept in order might be tricky?) then perhaps a secondary StoredMemoryPool type might also be a good idea.