kernel - Add swap block allocation iterator
* Instead of allocating the first available block the swap allocator
now has an iterator and attempts to allocate a block near the iterator.
On failure the iterator resets to the beginning of swap (0) and it
tries again.
* This theoretically should result in more linearized allocations of
swap space, allowing the pageout daemon to flush memory to a
hard-drive-based swap at much higher bandwidth.
* Greatly improves poudriere when using stressful memory parameters,
at least in the first pass.
* There are still some obvious linearity issues that can occur once
the iterator recycles back to 0 which need to be addressed. However,
this change is certainly not going to be worse and should
prevent degenerative swap situations where performance winds up
being permanently bad due to fragmented data laid down earlier that
is never paged back into memory.