Add overload `std.random.unpredictableSeed!UIntType`

$(REF unpredictableSeed, std,random) now has an overloaded version
`std.random.unpredictableSeed!UIntType` that can be used to produce
seeds of any unsigned type `UIntType`.

-------
import std.random : unpredictableSeed;

auto a = unpredictableSeed!uint;
static assert(is(typeof(a) == uint));

auto b = unpredictableSeed!ulong;
static assert(is(typeof(b) == ulong));

// The old syntax still works.
uint c = unpredictableSeed;
-------

Additionally the implementation quality of `unpredictableSeed` has been
improved, speeding it up and eliminating an obvious pattern in the high
bit. (Bear in mind that `unpredictableSeed` is still not
cryptographically secure.)
