Added persistent allocations.

Added a preserve flag which allows allocations made by an ArenaAllocator
to
outlive it. They are instead destroyed by the parent allocator. This can
go on
recursively if the parent also has the preserve flag set. If there is no
parent,
allocations are preserved for the lifespan of the Arena (basically
static).