rts/BlockAlloc: Allow aligned allocation requests
This implements support for block group allocations which are aligned to an integral number of blocks.
This will be used by the nonmoving garbage collector, which uses the block allocator to allocate the segments which back its heap. These segments are a fixed number of blocks in size, with each segment being aligned to the segment size boundary. This allows us to easily find the segment metadata stored at the beginning of the segment.
Edited by Ben Gamari