x86[_64]cpuid.pl: fix potential bias of OPENSSL_ia32_{rdrand,rdseed}

The previous implementations of OPENSSL_ia32_{rdrand,rdseed} returned an 8 if
RDRAND generated successfully a 0, or values between 0–8 if some RDRAND calls
found no entropy (carry flag not set) and a 0 was returned (or kept).

This change splits output from exit status.

Based on the observation that RDRAND failures are at least rare (the author
did not experience a single one generating GB on Sandy Bridge) the loop to
fill a buffer with random values, similar to Linux' getrandom(), has been
moved into OPENSSL_ia32_{rdrand,rdseed} and handling failures as well as
retries is the responsibility of the caller.
md_rand.c: Use new OPENSSL_ia32_rdrand.