more methods working with a non-global RNG

This is branched off of my other PR #8331 and continues it: the new commit here makes almost all `rand` methods work with a passed RNG. The main exception is `rand(r::Range, ...)` as I already touched this part of the code in #8309, so I prefer to wait before implementing it.
Also the value of `(srand(0); rand(Uint64))` changes here, to make the function more natural and similar to `rand(Uint128)`. I can revert this if considered a (worthless) breaking change.
It's weird, I remember having answered ("no") to Jeff's above comment but can't see it: can an inline comment be deleted when rebasing?

Yes this PR needs to be updated and rebased, unless it is deemed worthless.