Enforce alignment in pool allocator

Previously chunks were aligned according to the alignment of pointers, now
they are properly aligned to the chunkSize, or std::max_align_t for large
chunks.