alter `exchange_free` for sized deallocation

The support for sized deallocation is nearly complete. The only known
missing pieces are `Box<str>` and `Box<[T]>`.