Rework generic memory allocation interfaces

Signed-off-by: Richard Yao <ryao@gentoo.org>
Use Linux kzalloc to allocate kmem_cache_t objects

wake_up_bit() is called on a word inside kmem_cache_t objects.  This
calls virt_to_page() on the address of the memory. That is incompatible
with virtual memory, so we must switch to Linux's memory allocator.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Hack: Allow NULL pointers to be passed to strfree()

Signed-off-by: Richard Yao <ryao@gentoo.org>
Fix constructor/destructor calls

This has a few benefits. first, it fixes a regression that occurred in
splat's slab_reap and slab_age tests. Second, it makes porting code from
Illumos to ZFSOnLinux easier. Third, it has the side effect of
making reclaim from slab caches that specify reclaim functions an order
of magnitude faster. The splat slab_reap test usually took 30 to 40
seconds. With this change, it takes 3 to 4.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Remove kmem_alloc_node interface

Signed-off-by: Richard Yao <ryao@gentoo.org>