Cleaning up and splitting subheap creation helpers and free block merge logic.
Should be the last refactoring needed before LFH specific changes, as implemented in https://gitlab.winehq.org/wine/wine/-/merge_requests/1628.
--
v2: ntdll: Keep subheap parent heap pointer and check for mismatches.
ntdll: Move the insertion of the first block out of create_subheap.
ntdll: Split create_free_block into block_init_free / insert_free_block.
ntdll: Merge prev and next free heap blocks in heap_free_block.
ntdll: Split heap blocks before creating or resizing used block.
ntdll: Clear BLOCK_FLAG_PREV_FREE flag out of shrink_used_block.
ntdll: Move heap allocation and initialization into RtlCreateHeap.
ntdll: Split heap region memory allocation to allocate_region helper.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1629