memheap: dont alloc/memcpy when there is next node is enough for realloc

When realloc a bigger space and the next node is free and big enough, we
should directly relocate the next node instead of doing alloc/memcpy.
The new method not only faster in this cases, it would avoid memory
fragment as well.