This aligns the `heap[] array in fallback_malloc.cpp` to ensure
that it can be safely cast to `heap_node*`, and also adjusts the
allocation algorithm to ensure that every allocated block has the
alignment requested by `__attribute__((aligned))`, by putting the
block's `heap_node` header 4 bytes before an aligned address.
Patch originally by Eric Fiselier: this is an updated version of
D12669, which was never landed.
(A + sizeof(heap_node)) % RequiredAlignment