First attempt at implementing an Allocation pool

Now we just need to work out what to do in the three callbacks
depends on #951
Thinking of this, `OnStartUsingReserve()` seems like a better name, isn't it? Similarly, `OnEndUsingReserve()`