Do not align zio objects

We currently use physical memory for 512-byte objects, yet the ratio of
VmallocUsed to the capacity of ARC always exceeds 1. On one system, I
measured this ratio to be 1.52. After modifying another system to stop
aligning objects in zio caches, I measured the ratio to be 0.70, which
is a dramatic improvement.

The SPL slab code interleaves objects and their headers. The
interleaving results in each header consuming alignment bytes of storage
space when alignment is used. This virtually doubles required memory in
the worst case scenario. This contributed to severe memory pressure
when ARC was permitted to use 3/4 of system memory. Nothing currently
depends on this alignment, so it is safe to stop requiring it.

The best thing would be to rewrite the SPL slab code to stop
interleaving headers with objects. The low dangling fruit of killing zio
object alignment is a good compromise until a proper rewrite of the SPL
slab code is done. The benefits appear to be substantial.

A side effect of this patch is that unaligned caches that were
previously mapped to their aligned counterparts are being created. This
further reduces memory utilization by ensuring that object allocations
more closely match actual requirements.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>