remove the free function entirely. all allocators are now expected to
implement reset instead. I reallized I never ever want to free an
individual allocation ever again. The forever_allocator is a special
case wherEreset is a no-op. The arena allocator was deleted. It will be
replaced soon.
this allows for scope-based heap allocations. There is one limitation.
You cannot use the return keyword inside the following block. This trick
uses dark macro magic :)