An `IndexedPool` can allocate and delete elements without reordering.
Freed items memory will be reused by next allocations.
It is iterable and elements are indexable. Indexing is O(1).
Elements will never be reallocated so references are kept valid until
deletion.
Elements are allocated in chunks to reduce memory fragmentation and avoid
reallocation.