sha256 x86_64 optimization v2

This is a revision of https://github.com/zfsonlinux/zfs/pull/2332

Currently, the optimization only applies to kernel space,
because I haven't figured out how to it properly in user space.

AVX2 is untested because I don't have such CPU.
So use it with you own discretion.
While we are dropping support for kernels prior to 2.6.30, it should be noted that Linux 2.6.30 introduced support for AVX such that `kernel_fpu_begin()/kernel_fpu_end()` will properly save/restore the registers. Running the AVX routines on earlier kernels would be dangerous. We avoid that situation via `CONFIG_AS_AVX` and `CONFIG_AS_AVX2`, which did not exist on such kernels. However, the intention of these macros is to show assembler support and the information about the kernel supporting such assemblers is a side effect. If anyone decides to use a different mechanism (i.e. autotools) and backport this code to older kernels, they will need to implement their own save/restore mechanism to avoid clobbering the ymm registers. Such a mechanism would likely also be necessary in userspace.