std::gc: cache small(ish) allocations to avoid thrashing the pointer
trie.

Allocations are rounded to the next power of two and cached when they
become unreachable. Except for those above 1 MB.
std::trie: reverse the order in which chunks are generated.

This makes the garbage collector much faster (20+%).