Reduce number of defer blocks in each request

Provide a coro_malloc_full(), which gives the possibility of passing a
destructor function that's going to be called just before the defer
block is about to be freed.

Standard coro_malloc() is now just a call to coro_malloc_full(), passing
the nothing() funtion it was previously passing.
Ensure destroy_func from coro_malloc_full() won't touch defer metadata