ObjectAllocator is now thread-safe, using pseudo-lockless (CAS) pointer swaps for pushing/popping free items from the list.