Makes all memory pool derivatives effectively thread-safe.
Includes splitting off core functionality to a base MemoryPool class that can be re-used later if necessary.