geli: use unmapped I/O
Use unmapped I/O for geli. Unlike most geom providers, geli needs to
manipulate data on every read or write. Previously it used mapped bios; now
it uses sf_buf(9). This change adds two additional data copies on reads
(none on writes), but still ends up being faster due to less memory mapping
activity.
On my 16-core, dual socket server using geli on top of md(4) devices, this
change increases geli IOPs by about 3x.
Note that geli still can't use unmapped I/O when data integrity verification
is enabled.