Fix new compact block allocation in allocateForCompact
allocateForCompact() is called when nursery of a compact region is
full, to add new blocks to the compact. New blocks added to an existing
region needs a StgCompactNFDataBlock header, not a StgCompactNFData.
This fixes allocateForCompact() so that it now correctly allocates space
for StgCompactNFDataBlock instead of StgCompactNFData as before.
Fixes Trac #17044.
A regression test T17044 added.
(cherry picked from commit 981d3b9ecf0397744df9e1cbfdc805d1f9c29ef0)