Kmalloc minor cleanups

Extracted some helpers and made the code related to the tag size more
flexible.
kmalloc_incref()

All kmalloc'd blobs are reference counted.  kmalloc() gives you one ref.
You can get more with kmalloc_incref().  Release them with kfree().

Note that if you krealloc, you may or may not get a new buffer.  If you
have a buffer with more than one ref, and if you realloc and get a new
buffer, the caller to krealloc gets the new buffer with refcnt == 1, and
the original buffer gets decreffed by 1.  At that point, both ref users
are pointing to different blobs with the same, but copied, contents.
x86: Removes ioapic rerouting test

It doesn't work and just spews warnings, and no one is fixing it.  It
was originally meant to be watched by a human too.

Feel free to add a real IRQ routing test that's more than a printk in an
IRQ handler (which is what I've used in the past).