First attempt at implementing an Allocation pool

Now we just need to work out what to do in the three callbacks
depends on #951
`override` specifier missing here in all three functions