Fix main heap to support accurate getSize.

Tests for reusing free'd allocations were failing because calls to free
with the old main heap were never answered (they returned 0). This
change adds a new layer that maintains the allocation size in the first
4 bytes of the allocation itself.