Add cv_wait_io() to account I/O time

Under Linux when a task is waiting on I/O it should call the
io_schedule() function for proper accounting.  The Solaris
cv_wait() function provides no way to specify what the cv
is waiting on therefore cv_wait_io() is introduced.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #206
RHEL 6.4 compat, fallocate()

In the upstream kernel the FALLOC_FL_PUNCH_HOLE #define was
introduced after the fallocate() function was moved from the
inode_operations to the file_operations structure.  Therefore,
the SPL code assumed that if FALLOC_FL_PUNCH_HOLE was defined
it was safe to use f_ops->fallocate().

Unfortunately, the RHEL6.4 kernel has only backported the
FALLOC_FL_PUNCH_HOLE #define and not the fallocate() change.

To address this compatibility issue the spl_filp_fallocate()
helper function was added to properly detect which interface
is available.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Merge remote branch 'upstream/master'
CCM-AES "associated auth data" is optional, and we no longer
set it to 16 bytes of zeros. Now we don't use associated at all.
Do not use associated data.
Merge branch 'master' of git://github.com/zfsrogue/spl-crypto into hack
GCM mode was not setting "iv" correctly (using CCM method).
Merge branch 'hack'

Conflicts:
	module/spl/spl-crypto.c