Rework the frame allocator.
Rework the frame allocator.

It was broken, and couldn't allocate frames beyond frame 288. When it
did go beyond it would get stuck in a strange loop of allocating the
same frame over and over. This fixes it by reworking the algorithm.
However it is not really efficient and needs some TLC.

tjhancocks/vkernel,tjhancocks/vkernel,tjhancocks/vkernel