Do not access size_ unless necessary.

Support heap -> internal move as well.
Use a cheaper allocation helper for ctors.
Split copy_to_head() into copying and init.

The oversize part of allocate_preferred() are now initialized.