move commands out of DFS
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.
Merge pull request #131 from grissiom/memheap

memheap: don't alloc/memcpy when there is next node is enough for realloc
test