Do not store any metadata where the user (was) legitimate to write
Before, free fragments were chained within the user area, leading to
obscure breakdown when the user was mean enough to write into the
block after a free(). Now, these data are stored as swag directly into
the mdp->heapinfo that is where we store our metadata.
We have one extra complication due to the fact that heapinfo must be
reallocated when we mmap more memory. When this happens, we have to
update all swag hooks manually to apply the offset.
Yup, this went that bad :-/