The ArenaAllocator is a memory allocator which allows to allocate
memory regions of arbitrary size, but requires to deallocate all of them
at once. It reserves memory in big blocks which it then shares in 
required pieces.
A deallocate-once, arbitrary size memory allocator