random_get_pseudo_bytes() should not provide cryptographic strength entropy

Perf profiling of dd on a zvol revealed that my system spent 3.16% of
its time in random_get_pseudo_bytes(). That occurred because the SPL
mapped a Solaris function for generating pseudo-random data to a Linux
function that provides non-blocking cryptographic strength entropy from
the system's entropy pool. Draining the system's entropy pool could
weaken anything using it that requires cryptographic strength entropy,
so we need to obtain pseudo-random data in a way that does not do that.

The Linux kernel did not export a suitable function for this until it
exported get_random_int() in Linux 3.10. While we could implement an
autotools check so that we use it when it is available or even try to
access the symbol on older kernels where it is not exported using the
fact that it is exported on newer ones as justification, we can instead
implement our own pseudo-random data generator. For this purpose, I have
written one based on a pseudo-random number generator proposed in a
paper by Sebastiano Vigna that itself was based on work by the late
George Marsaglia.

http://arxiv.org/pdf/1402.6246v2.pdf

Profiling the same benchmark with a variant of this patch that did not
disable interrupts showed that time spent in random_get_pseudo_bytes()
dropped to 0.06%. That is a factor of 50 improvement.

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