Add cursor support to arena allocator.

Allows a location in the arena to be recorded and all allocations after
it to later be freed. Supports efficient reuse of freed buffers.

Make the large allocation case less special to accommodate cursor
semantics. We can't reorder chunks anymore.